Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] laconical input from a file for arrays and/or matrices
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Virgile Prevosto <virgile.prevosto@m...>
Subject: Re: [Caml-list] laconical input from a file for arrays and/or matrices
: 

Le lundi 02 février, à 11h57 +0100,
samsaga2 a écrit:

> let output_matirx m = output_value stdout m
> let input_matrix () = input_value stdin
> 
> But no compatible with c++ files :-P
> 
> Khamenia, Valery wrote:
> >  here goes my usual way to input ASCII matrices from file in C++:

# let x = Array.make_matrix 1 1 3 in output_value stdout x;;
¦¾C
- : unit = ()

I doubt that we can speak of ASCII matrices in that case ;-)

Anyway, it's not so difficult to obtain a code fragment close to the
C++ one, thanks to the Array and Scanf modules: 

(* CAML version. *)
let input_matrix () = 
  let m = read_int () in
  let n = read_int () in
  let matrix = Array.make_matrix m n 0. in
    for i = 0 to (m - 1)  do
      for j = 0 to (n -1) do
          matrix.(i).(j) <-  Scanf.scanf "%f " (fun x -> x)
      done
    done;
    matrix;;
val input_matrix : unit -> float array array = <fun>

Of course, you'll have to adapt the formatting instruction of scanf to
your datas (the main problem here is that scanf expects to fins a blank
after each entry, which means that your file must end with a newline or
a space).

-- 
E tutto per oggi, a la prossima volta
Virgile

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners