前提・実現したいこと
ある100行2列の数字が入ったファイルを使い、一列づつの合計、平均、分散、標準偏差を求めるプログラミングを考えているんですが、合計と平均値はあっているものの、分散の値が合いません。
そこで、どこが間違っているのか間違いに気づいた方に指摘していただきたいです。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
該当のソースコード
#include <stdio.h>
int main(){
int i;
float x[101],y[101];
float sum1,sum2,ave1,ave2,bun1,bun2,hyo1,hyo2;
FILE *fp;
sum1=0.0; sum2=0.0; ave1=0.0; ave2=0.0; bun1=0.0; bun2=0.0; hyo1=0.0; hyo2=0.0; fp=fopen("input2.txt","r"); for(i=1;i<=100;i++){ fscanf(fp,"%f%f\n",&x[i],&y[i]); printf("%f,%f\n",x[i],y[i]); sum1+=x[i]; sum2+=y[i]; ave1=sum1/100.0; ave2=sum2/100.0; bun1=pow(x[i]-ave1,2.0)/100.0; bun2=pow(y[i]-ave2,2.0)/100.0; hyo1=sqrt(bun1); hyo2=sqrt(bun2); } printf("1列目の合計値は%f\n",sum1); printf("2列目の合計値は%f\n",sum2); printf("1列目の平均値は%f\n",ave1); printf("2列目の平均値は%f\n",ave2); printf("1列目の分散は%f\n",bun1); printf("2列目の分散は%f\n",bun2); printf("1列目の標準偏差は%f\n",hyo1); printf("2列目の標準偏差は%f\n",hyo2); fclose(fp); return 0;
}
試したこと
powを使わずに、二回かけて計算してみたり分散の計算を掛け算割り算足し算に分けて計算したりしました。
Googleで調べた類題の分散の計算方法と式は同じでしたので、どこが間違っているか見当がつかないです。
補足情報(FW/ツールのバージョンなど)
回答2件
あなたの回答
tips
プレビュー