Browse thread
[Caml-list] laconical input from a file for arrays and/or matrices
-
Khamenia, Valery
-
samsaga2
- Virgile Prevosto
- Richard Jones
- Issac Trotts
-
samsaga2
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ 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