ファイル読み取り→平均、標準偏差、最大値、最小値を求める

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ルーニー

ファイル読み取り→平均、標準偏差、最大値、最小値を求める

#1

投稿記事 by ルーニー » 15年前

問題:レポートの得点が記録されたプログラムがある。これからデータを読み取り、平均、標準偏差、最大値、最小値を求めるプログラムを求めなさい。

分かるところを下のようにプログラミングしたのですが、どのように平均、標準偏差、最大値、最小値を求めればいいか分かりません。
ご教授願います。

#include <stdio.h>

int main (int argc, const char * argv[/url]) {
int average,stdev,max,min;
char line[100],point[100],;
FILE*in_file;
in_file=fopen("Book1.txt","r");
if(in_file==NULL){
return 0;
}


while(fgets(line,100,in_file)!=NULL) {
sscanf(line, "%s" ,point);
average=
stdev=
max=
min=

printf("平均=%s, 標準偏差=%s,最大値=%s,最小値=%s\n",average,stdev,max,min);
}


fclose(in_file);


return 0;
}

box

Re:ファイル読み取り→平均、標準偏差、最大値、最小値を求める

#2

投稿記事 by box » 15年前

得点の数値を格納する変数はどれですか?

KEYONN_

Re:ファイル読み取り→平均、標準偏差、最大値、最小値を求める

#3

投稿記事 by KEYONN_ » 15年前

//サンプルプログラムです。それぞれ計算方法を書いておいたので、参考にしてください。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

int main()
{
double average=0.0f,stdhensa=0.0f;//平均値、標準偏差(偏差のスペル分からんorz)
int max=0,min=65536;//最大値、最小値初期化
int point[100]={0};//得点テーブル
FILE *fp;//ファイルポインタ
int i;//ループ用変数i

srand(time(NULL));

//ファイル書き込み
fp=fopen("Book1.txt","w");
for(i=0;i<100;i++)
{
fprintf(fp,"%d\n",rand()%101);//100だと、乱数が0~99になってしまう
}
fclose(fp);

//ファイル読み込み
fp=fopen("Book1.txt","r");
for(i=0;i<100;i++)
{
fscanf(fp,"%d",&point);
}
fclose(fp);

//計算部分
//まず平均
int sum=0;//0で初期化しないと足すときに困る
for(i=0;i<100;i++)
{
sum+=point;
}
average=sum/100.0;//平均求める(全部足してその個数で割る)

//次に標準偏差
//まず、平均との差を出す
double diff[100]={0.0f};
for(i=0;i<100;i++)
{
diff=average-point;
}
//次に二乗する
double p[100]={0.0f};
for(i=0;i<100;i++)
{
p=pow(diff,2);
}
//あとは全部足して、個数で割り、平方根を求める
sum=0;//相変わらず、0で初期化
for(i=0;i<100;i++)
{
sum+=p;
}
stdhensa=sqrt(sum/100.0);//標準偏差求まる

//最大値と最小値は簡単(最初の代入を忘れずに)
for(i=0;i<100;i++)
{
if(max<point) max=point;//maxより大きければmaxに代入
if(min>point) min=point[i];//minより小さければminに代入
}

printf("平均値は%f、標準偏差は%f、最大値は%d、最小値は%d\n",average,stdhensa,max,min);

return 0;
}

ルーニー

Re:ファイル読み取り→平均、標準偏差、最大値、最小値を求める

#4

投稿記事 by ルーニー » 15年前

参考になりました。
ありがとうございます。

1EC10XXX

Re:ファイル読み取り→平均、標準偏差、最大値、最小値を求める

#5

投稿記事 by 1EC10XXX » 15年前

上のサンプルプログラムで、プログラムから100個の乱数を発生させるのではなく、
例えば
54
65
78
95



のように特典が記録されたテキストファイルから平均、標準偏差、最大値、最小値を求める方法を教えてください。
平均の分母の数は100ではなくテキストファイルの行数(=サンプルの数)です。
どうかよろしくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る