• ベストアンサー

平均の計算なのですが…

プログラミング初心者の者です。 質問なのですが、int型の配列num[10]にあらかじめ10個の整数を入れておき、その平均、分算を計算して表示するプログラムを作成する、というもので、平均、分散は次の式を使って計算するというものです。 average=1/N*Σ(i=0,N-1)*num[i] variance=1/N*Σ(i=0,N-1)*(num[i]-average)2乗 平均のプログラミングが分かれば、分散の方は分かると思うので、上の式を使った命令文の書き方を誰か教えて下さりますでしょうか。お願いします。

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

  • ベストアンサー
  • keyguy
  • ベストアンサー率28% (135/469)
回答No.3

#include<iostream> using namespace std; void main(void) { int i; int num[10]={1,2,3,4,5,6,7,8,9,10}; double av,vr; for(av=i=0;i<10;av+=num[i++]); cout<<"平均:"<<(av/=10)<<endl; for(vr=i=0;i<10;vr+=pow((num[i++]-av),2)); cout<<"分散:"<<(vr/=10)<<endl; }

faryii
質問者

補足

分散のプログラミングまで教えていただき、ありがとうございます。 で、すいません、言い忘れていました。 私が今勉強しているのでは#include<iostream>ではなく、#include<stdio.h>の方なんです。 さっき<iostream>のことを調べたのですが、coutだったらstdio.hではprintfのように微妙に違うんですよね? stdio.hだと上のプログラミングを他にどこを変更すればよいのでしょうか?

その他の回答 (3)

  • keyguy
  • ベストアンサー率28% (135/469)
回答No.4

あなたの使っているコンパイラでもおそらくcoutは使えます だからプログラムをそのままこーピーして貼り付けてコンパイル実行すればいいのです 使えないコンパイラならば(Windowsならば) 無償Borland C++5.51(Cの範囲だけでも使用可)をボーランドのサイトからDLして使いませう なおSTLを使えばCの範囲で使った場合次のようになります #include<iostream> #include<vector> using namespace std; void main(void) { unsigned u; vector<int> num; double av,vr; //inupt start num.push_back(0); num.push_back(1); num.push_back(2); num.push_back(3); num.push_back(4); num.push_back(5); num.push_back(6); num.push_back(7); num.push_back(8); num.push_back(9); //inup end if(num.size()==0)return; for(av=u=0;u<num.size();av+=num[u++]); cout<<"平均:"<<(av/=num.size())<<endl; for(vr=u=0;u<num.size();vr+=pow((num[u++]-av),2)); cout<<"分散:"<<(vr/=num.size())<<endl; }

faryii
質問者

お礼

お手数をおかけしてすいませんでした。 とても助かりました。 どうもありがとうございました。

回答No.2

num[0] ~ num[9] の 総和を求め、それを10で割ればいい。 > Σ(i=0,N-1)*num[i] これヘン。 '*'がついてるはずがありません。 このヘンな式に騙されていませんか。

faryii
質問者

お礼

> Σ(i=0,N-1)*num[i] *はおかしいのですか…。全く気付きませんでした。 教えてくださり、ありがとうございました。

回答No.1

要点だけ #define N 10 int num[N]; int i; int sum; float average; /* Σの計算 */ sum=0; for (i=0; i<N; i++) { sum += num[i]; } /* 平均の計算 */ average=1.0/(float)N*(float)sum;

faryii
質問者

お礼

Σのところをまず最初に計算しているので分かりやすかったです。どうもありがとうございました。参考になりました。