質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

4779閲覧

VB.NET 平均は繰り返し中に計算ではなく、 合計が出た後に計算したい。

fffu8

総合スコア37

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/03/17 00:36

編集2020/03/17 02:40

平均の計算は繰り返しの中でなく、合計が出た後に計算したいのですが、
どのように書き直したらよろしいでしょうか?

コードの中の'平均を計算する を繰り返し内を抜けたところで書かないといけないと
思うのですが、どうように書けばいいかわかりません。

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/17 00:42

課題を全部人にやらせようとしていませんか? それだと何の学習効果もないので、時間とお金の無駄だと思いますよ。先生に聞いてください。
fffu8

2020/03/17 00:50

ヒントを頂きたいです。
Takumiboo

2020/03/17 00:58

> 平均は繰り返し中に計算ではなく、 合計が出た後に計算したい ではそうしたら良いのでは?まずは思うように書いてみたら良いと思いますが。
y_waiwai

2020/03/17 01:12

平均の計算を繰り返しの外でやったらどうなるんでしょうか
fffu8

2020/03/17 01:15

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
fffu8

2020/03/17 01:15

こうですか?
y_waiwai

2020/03/17 01:17

実際に動かしてみてどうなるか確認してみよう
Zuishin

2020/03/17 01:35 編集

ていうか適当に書き散らすんじゃなく、平均値の算数的な求め方から調べたらどうですか? 手で計算できなければプログラミングできないでしょう。 https://www.manabinoba.com/math/4355.html
Takumiboo

2020/03/17 05:07

まず、ソースコード全体をコードブロックで囲んでください。 ```VB.NET (ここにソースコード) ``` 当初より「average = total / (list.Count * i)」という行が追加されていますが、その意図(なぜこう書いたのか)を教えてください。
guest

回答1

0

自己解決

解決しました。ありがとうございます。

投稿2020/03/17 07:02

fffu8

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問