ファイルを読み込んで計算
Posted: 2010年7月23日(金) 13:07
下の問題に取り組んでいるのですが、計算結果が明らかにおかしな数になっています。おかしいところとその改善法を教えてください。
よろしくお願いします。
問題:レポートの得点が記録されたプログラムがある。これからデータを読み取り、平均、標準偏差、最大値、最小値を求めるプログラムを求めなさい。
#include <stdio.h>
int main (int argc, const char * argv[/url]) {
int max,min,i;
double average,stdev;
char line[100],name[100],point[100];
int sum=0;
double diff[100];
double a[100];
FILE*in_file;
in_file=fopen("/auto_mnt/home1/09nen/1EC09098K/Documents/File1.txt","r");
if(in_file==NULL){
return 0;
}
while(fgets(line,100,in_file)!=NULL) {
sscanf(line, "%" "%s" ,name,point);
}
for (i=0;i<100;i++)
{
sum+=point;
}
average=sum/name;
for (i=0;i<100;i++)
{
diff=average-point;
}
for (i=0;i<100;i++)
{
a=pow(diff,2);
}
for (i=0;i<100;i++)
{
sum+=a;
}
stdev=sqrt(sum/name);
for (i=0;i<100;i++)
{
if(max<point) max=point;
if(min>point[i]) min=point[i];
}
printf("平均=%f, 標準偏差=%f,最大値=%d,最小値=%d\n",average,stdev,max,min);
fclose(in_file);
return 0;
}
よろしくお願いします。
問題:レポートの得点が記録されたプログラムがある。これからデータを読み取り、平均、標準偏差、最大値、最小値を求めるプログラムを求めなさい。
#include <stdio.h>
int main (int argc, const char * argv[/url]) {
int max,min,i;
double average,stdev;
char line[100],name[100],point[100];
int sum=0;
double diff[100];
double a[100];
FILE*in_file;
in_file=fopen("/auto_mnt/home1/09nen/1EC09098K/Documents/File1.txt","r");
if(in_file==NULL){
return 0;
}
while(fgets(line,100,in_file)!=NULL) {
sscanf(line, "%" "%s" ,name,point);
}
for (i=0;i<100;i++)
{
sum+=point;
}
average=sum/name;
for (i=0;i<100;i++)
{
diff=average-point;
}
for (i=0;i<100;i++)
{
a=pow(diff,2);
}
for (i=0;i<100;i++)
{
sum+=a;
}
stdev=sqrt(sum/name);
for (i=0;i<100;i++)
{
if(max<point) max=point;
if(min>point[i]) min=point[i];
}
printf("平均=%f, 標準偏差=%f,最大値=%d,最小値=%d\n",average,stdev,max,min);
fclose(in_file);
return 0;
}