ページ 11

c言語です。課題を解いていたのですがうまく作動しません。

Posted: 2011年1月30日(日) 09:07
by ともやん
c言語です。課題を解いていたのですがうまく作動しません。

「レポートの得点が記録されたテキストファイルがある。これからデータを読み
取り、平均、標準偏差、最大値、最小値を求めるプログラムを作りなさい」
という課題が出ていて友人にヒントを得て

コード:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void){
	char *fnm="Book1.txt";
	FILE *dat;
	char *p,chs[100];
	int ten;
	int n=0;
	int min;
	int max;
	double avr;
	double sdv;

	dat = fopen(fnm,"r");
	sdv = avr = 0;
	while(fgets(chs,100,dat)!=NULL){
		ten = strtol(chs,&p,10);
		if(n==0){
			min = max = ten;
		}
		min = (min>ten)? ten:min;
		max = (max<ten)? ten:max;
		avr = avr+ten;
		sdv = sdv+ten*ten;
		n++;
	}
	avr = avr/n;
	sdv = sqrt(sdv/n-avr*avr);
	printf("最大 = %d\n",max);
	printf("最小 = %d\n",min);
	printf("平均 = %f\n",avr);
	printf("偏差 = %f\n",sdv);
	fclose(dat);
	return 0;
}
とプログラミングしたんですが結果がうまく行きません。
どこがどう間違っているか指摘していただきたいです

よろしくお願いします

(管理人がソースコードの表示を変更しました)

Re: c言語です。課題を解いていたのですがうまく作動しません。

Posted: 2011年1月30日(日) 10:03
by box
>プログラミングしたんですが結果がうまく行きません。

こういう質問がいちばん困るんですよね。
どううまくいかないのか全く書いてないので、回答のしようがありません。

今回の場合ですと、
 ・どういう入力データを使ったか
 ・想定結果と、どんな風に異なったか
ぐらいは書いていただきませんと、ね。

Re: c言語です。課題を解いていたのですがうまく作動しません。

Posted: 2011年1月30日(日) 10:19
by ともやん
返信ありがとうございます

テキストファイルに適当に数字をいれてそれを読み込ませて最大値、最小値、平均、偏差値を計算させたかったんですが
どんな値をいれても
最大 = 100
最小 = 0
平均 = 46.920000
偏差 = 29.586375
が結果に出てきます

(この時入れたのは





という値をテキストファイルに入れた)

正しく計算結果をだすにはどうしたらよろしいのでしょうか?

Re: c言語です。課題を解いていたのですがうまく作動しません。

Posted: 2011年1月30日(日) 10:57
by box
おかしいですね。
こちらでは、

1
2
3
4
5

という入力データを使って

最大 = 5
最小 = 1
平均 = 3.000000
偏差 = 1.414214

という、正しそうな結果を得ました。

Re: c言語です。課題を解いていたのですがうまく作動しません。

Posted: 2011年1月30日(日) 11:03
by box
>平均、標準偏差、最大値、最小値を求めるプログラムを作りなさい

>最大値、最小値、平均、偏差値を計算させたかった

2つの投稿で、「標準偏差」と「偏差値」という、別々の値について言及されています。
本当に求めたいのはどちらですか?
ソースコードの中身からすると標準偏差のようですが…。

Re: c言語です。課題を解いていたのですがうまく作動しません。

Posted: 2011年1月30日(日) 11:17
by ともやん
ごめんなさい

打ち間違えました
標準偏差を出したいです

テキストファイルの作り方がおかしいのでしょうか?

Re: c言語です。課題を解いていたのですがうまく作動しません。

Posted: 2011年1月30日(日) 13:03
by Dixq (管理人)
http://www1.cts.ne.jp/~clab/hsample/Func/Func09.html

こちらに参考になる資料があります。

Re: c言語です。課題を解いていたのですがうまく作動しません。

Posted: 2011年1月30日(日) 14:00
by ともやん
boxさん
Dixqさん
ありがとうございました

友人に見てもらったところ指定先のフォルダ
の名前が間違っていたから値が正しくでなかったらしいです


ありがとうございました