0

ユーザーから一連/リスト/シーケンスの数字を読み取り、数字を処理し、結果を出力するプログラムを SML で作成しようとしています。ユーザーがいくつの数字を入力するかわかりません。プログラムは、すべての数値を読み取って結果をまとめて出力することも、一度に 1 つずつ読み取って出力することもできます。入力が別のファイルにあるか、コンソールで手動で入力されているかは気にしません。

入力を読み取るにはどうすればよいですか?

fun fact x = if x<2 then 1 else x*fact(x-1); 

let val keepgoing:bool ref = ref true in
   while !keepgoing do
      let val num = valOf(TextIO.inputLine TextIO.stdIn) in 
      print( Int.toString( fact( valOf( Int.fromString( num ) ) ) ) );
      keepgoing := (null(explode(num)))
   end
end;

複雑な変換については申し訳ありません。整数を読み取る簡単な方法も知っていれば、それもありがたいです。

4

1 に答える 1

1

あなたの論理にはここで欠陥があります。あなたがしたいkeepgoing := not (null (explode num))。右?その変更で私にとってはうまくいきます。最後の改行の削除を実装する必要があります (そのため、null の爆発は必要なことを行います)、複数の数字を含む行を解析する必要がありますが、基本的には正しい考えを持っています。

于 2013-10-26T18:55:54.913 に答える