• ベストアンサー

基本的なことから分かりません。助けてください。

身長と体重を10づつ入力してそれぞれの平均、分散、標準偏差、 身長と体重の共分散、相関係数を求めるプログラミングを VisualBasicの分岐処理、繰り返し処理、配列の概念を利用して作りたいのですが 全然分かりません。教えてください。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

皆さん出きる問題だと思う。しかし回答が少ない。 もう少し自分で勉強しなさいと言う風に私は感じる。 しかし初めは皆んな習い覚えるのだし、自分も充分わかってないのだし、やって見ようと思いました。 (1)VisualBasicを使うのですね。 (2)普通にやると、実行するとForm1が自動的に出来てしまうので、これを使わないようにしようと思い、VBE画面のプロジェクトのForm1を右クリックしてForm1の解放をクリックしました。 (3)普通は標準モジュールのSubの後はルーチン名はなんでも良いが、下記の場合はMainを要求してくるのでSub main()ではじめる。 (4)昔のBASICではINPUTだったが、VBなのでINPUTBOX関数で、入力値を取った。 昔はPRINT文だったが、表示にはMSGBOX関数を 使った。 ------- Sub main() Dim i ,n As Integer Dim d(10) As Double Dim s, av As Double s = 0 For i = 1 To 10 x = InputBox(i & "番目の身長 = ") d(i) = x s = s + x Next i n = i - 1 MsgBox n & "件入力" av = s / n MsgBox "平均=" & av '----- s = 0 For i = 1 To 10 s = s + (d(i) - av) ^ 2 Next i MsgBox "偏差平方和=" & s std = (s / n) ^ (1 / 2) MsgBox "標準偏差=" & std End Sub エクセルでは,下記で求められます。検算に使ってください。 (1)平均Average(A1:A10) (2)偏差平方和DEVSQ(A1:A10) (3)標準偏差STDEVP(A1:A10)に当たります。 もう1種の標準偏差STDEVがありますので注意。 ---- For-Nextを使わないなら(平均の部分まで) Sub main() Dim i, s, av As Double s = 0 i = 0 p01: If i = 10 Then GoTo p02 x = InputBox(i + 1 & "番目の身長 = ") s = s + x i = i + 1 GoTo p01 p02: MsgBox i & "件入力" av = s / i MsgBox "平均=" & av End Sub です。

その他の回答 (1)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

まず、それぞれの計算式は わかってるものとします。 計算式が、わからなければ、問題外ですから。 テキストボックスを 10個、設置します。 平均を出すには それぞれのテキストボックスのテキストを合計して 10で割ります。 このようにして、他も算出してください。

doraeres57
質問者

補足

フォームはすでに出来ています。 身長はtext1をコピーして text1(0) text1(1) text1(2) text1(3) text1(4) text1(5) text1(6) text(7)text(8) text(9)というように配列を使っています。 体重もtext2で同じようになっています。 command1をクリックすると、 身長の平均をtext3、    体重の平均をtext4、    分散をtext5、       分散をtext6、    標準偏差をtext7      標準偏差をtext8、    共分散をtext9 相関係数をtext10 に表示できる     具体的なプログラムを教えてください。 Private sub command1_click End sub の空欄に入力する内容を教えてください。