2017-08-07 5 views
-2

これまでのところ、私はかなり多くのものを設定しましたが、ダムprintfnはまだ動作していません。F#配列合計は印刷できません

open System 

[<EntryPoint>] 
let main argv = 
    let n = Console.ReadLine() |> int 
    let nums = seq { for i in 1..n -> Console.ReadLine() |> int } 
    printfn "%d" (Seq.sum nums) 
    0 
+0

は最後に0を入れて? –

+0

mainはintを返す必要があり、printfnはユニットであると私は考えています。 –

+0

0はエラーを修正しましたが、何らかの理由で配列の合計がまだ機能していません。私は、この式の結果が暗黙的に無視されているという警告があります。この値を明示的に破棄するには 'ignore'を使用することをお勧めします。例えば 'expr |> ignore'や 'let'たとえば、名前を 'let result = expr'とします。 –

答えて

1

私が気づいた2つのことは、終了コードである0でプログラムを終了する必要があることです。 FSharpの等号は2番目のものですが、値の更新には使用されません。代わりに< - 演算子が使用されます。ここに更新された変更を加えたプログラムがあります。

open System 

[<EntryPoint>] 
let main argv = 
    let mutable sum = 0 
    let n = Console.ReadLine() |> int 
    for i in 1..n do 
     let mutable r = Console.ReadLine() |> int 
     sum <- sum + r; 
    printfn "%d" sum 
    0 
+0

ありがとうございます。警告もエラーもなくなりましたが、何らかの理由で配列合計がまだ機能していません。それは価値を印刷していないのと同様です。 –

+0

これは.fsxファイルまたはfsファイルで実行していますか? – JosephStevens

2

あなたのコードに何が問題なのかを解説します。

もっとF#の方法でこれをやりたければ、おそらく突然変異を排除したいと思うでしょう。これを行う1つの合理的に良い方法は、あなたがコンソールから読んでいるすべての数字の配列を構築して、合計を計算するためにSeq.sumを使用するシーケンス式を使用することです:

[<EntryPoint>] 
let main argv = 
    let n = Console.ReadLine() |> int 
    let nums = seq { for i in 1..n -> Console.ReadLine() |> int } 
    printfn "%d" (Seq.sum nums) 
    0 
+0

残念ながら、印刷物はまだ動作していません。つまり、printfn以外はすべて設定する必要があります。 –

+0

@AlexZhuravel「働いていない」とはどういう意味ですか? –

+0

何らかの理由で印刷されていません。ここに画像:https://prnt.sc/g5ow1v –

関連する問題