10個の実数データを入力すると、平均と標準偏差を求めるプログラムを作りたいです。
平均を出すところまでは大丈夫なのですが、(x[i]-xの平均)^2の和をどうやって出せばよいか分かりません。
もしよろしければご協力お願いします。
※標準偏差の公式は以下のもの。
![]
#include <stdio.h> #include <math.h> int main(void) { int x[10], i, sum, ave, sum2, k; for (i = 0; i < 10; i++) { printf("x[%d] = ?", i); scanf("%d", &x[i]); sum = sum + x[i]; } ave = sum / 10; printf("ave = %d",ave); return 0; }
> 平均を出すところまでは大丈夫なのですが
本当ですか? 1, 2, 3,... 10 の平均はそのプログラムでいくつになりますか?
合計を求められているのに、(x[i]-xの平均)^2 が求められないというのが不思議です。
どの部分が分からないのでしょうか? 二乗?? (x[i]-xの平均)*(x[i]-xの平均) でいいです。
@kazuma-s 確かに平均が5になってしまいましたが、sumの初期値を0としても上手くいきません。どこか間違っているのでしょうか?
@otn for (i = 0; i < 10; i++) {
sum2 = sum2 + (x[i]-ave)*(x[i]-ave);
}
k = sqrt(sum2/10);
として標準偏差の値を出力しても明らかに答えが違ってしまいます。
どこか間違っているのでしょうか?
コードは出来てますね。
整数と実数の違いが分かりませんか?
3 / 2 の結果は何でしょうか?
int型の場合は1
double型の場合は1.5でしょうか。
sum, ave, 標準偏差をdouble型として出力すると正しい答えになりましたが、考え方は正しいですか?
はい。それでいいです。
回答2件
あなたの回答
tips
プレビュー