平均の計算は繰り返しの中でなく、合計が出た後に計算したいのですが、
どのように書き直したらよろしいでしょうか?
コードの中の'平均を計算する を繰り返し内を抜けたところで書かないといけないと
思うのですが、どうように書けばいいかわかりません。
Imports System.IO
Module Module1
Sub Main(ByVal args As String()) '読み込んだデータをリストに代入 Dim list As List(Of String()) = readData(args(0)) '変数宣言と初期化 Dim total As Double = 0 Dim average As Double = 0 For Each num As String() In list For i As Integer = 0 To num.Length - 1 '合計を計算 total = total + Double.Parse(num(i)) Next Next
** '平均を計算**
average = total / (list.Count * i)
'表示
Console.WriteLine("平均は" + CStr(average) + "です。")
Console.ReadLine() End Sub Private Function readData(ByVal filePath As String) As List(Of String()) 'ファイルの宣言 Dim sr As StreamReader = New StreamReader(filePath, System.Text.Encoding.Default) 'リストの宣言 Dim lists As List(Of String()) = New List(Of String())() 'データの格納 While -1 < sr.Peek() Dim list As String() = sr.ReadLine().Split(" "c) '追加 lists.Add(list) End While '閉じる sr.Close() Return lists End Function
End Module
課題を全部人にやらせようとしていませんか?
それだと何の学習効果もないので、時間とお金の無駄だと思いますよ。先生に聞いてください。
ヒントを頂きたいです。
> 平均は繰り返し中に計算ではなく、 合計が出た後に計算したい
ではそうしたら良いのでは?まずは思うように書いてみたら良いと思いますが。
平均の計算を繰り返しの外でやったらどうなるんでしょうか
Imports System.IO
Module Module1
Sub Main(ByVal args As String())
'読み込んだデータをリストに代入
Dim list As List(Of String()) = readData(args(0))
'変数宣言と初期化
Dim total As Double = 0
Dim average As Double = 0
For Each num As String() In list
For i As Integer = 0 To num.Length - 1
'合計を計算
total = total + Double.Parse(num(i))
Next
Next
'平均を計算
average = total / num.Length
'表示
Console.WriteLine("平均は" + CStr(average) + "です。")
Console.ReadLine()
End Sub
Private Function readData(ByVal filePath As String) As List(Of String())
'ファイルの宣言
Dim sr As StreamReader = New StreamReader(filePath, System.Text.Encoding.Default)
'リストの宣言
Dim lists As List(Of String()) = New List(Of String())()
'データの格納
While -1 < sr.Peek()
Dim list As String() = sr.ReadLine().Split(" "c)
'追加
lists.Add(list)
End While
'閉じる
sr.Close()
Return lists
End Function
End Module
こうですか?
実際に動かしてみてどうなるか確認してみよう
ていうか適当に書き散らすんじゃなく、平均値の算数的な求め方から調べたらどうですか?
手で計算できなければプログラミングできないでしょう。
https://www.manabinoba.com/math/4355.html
まず、ソースコード全体をコードブロックで囲んでください。
```VB.NET
(ここにソースコード)
```
当初より「average = total / (list.Count * i)」という行が追加されていますが、その意図(なぜこう書いたのか)を教えてください。
回答1件
あなたの回答
tips
プレビュー