質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

3965閲覧

10個の実数データの標準偏差を求めたい

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2020/07/20 13:18

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; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuma-s

2020/07/20 13:57

> 平均を出すところまでは大丈夫なのですが 本当ですか? 1, 2, 3,... 10 の平均はそのプログラムでいくつになりますか?
otn

2020/07/20 14:03

合計を求められているのに、(x[i]-xの平均)^2 が求められないというのが不思議です。 どの部分が分からないのでしょうか? 二乗?? (x[i]-xの平均)*(x[i]-xの平均) でいいです。
退会済みユーザー

退会済みユーザー

2020/07/20 14:29

@kazuma-s 確かに平均が5になってしまいましたが、sumの初期値を0としても上手くいきません。どこか間違っているのでしょうか? @otn  for (i = 0; i < 10; i++) {   sum2 = sum2 + (x[i]-ave)*(x[i]-ave);    }    k = sqrt(sum2/10); として標準偏差の値を出力しても明らかに答えが違ってしまいます。 どこか間違っているのでしょうか?
otn

2020/07/20 14:43

コードは出来てますね。 整数と実数の違いが分かりませんか? 3 / 2 の結果は何でしょうか?
退会済みユーザー

退会済みユーザー

2020/07/20 14:58

int型の場合は1 double型の場合は1.5でしょうか。 sum, ave, 標準偏差をdouble型として出力すると正しい答えになりましたが、考え方は正しいですか?
otn

2020/07/20 16:42

はい。それでいいです。
guest

回答2

0

ベストアンサー

整数と実数の違いが分かっていませんでした。
データ全体の和を出すコードと似たような形で正しく出力出来ました。

投稿2020/07/21 00:17

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

公式どおりに組み立てるだけなんだがな...

C

1#include <stdio.h> 2#include <math.h> 3 4int main(void) { 5 6 double x[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 7 int i; 8 double sum, mean, variance, standard_deviation; 9 10 // 平均 11 sum = 0.0; 12 for (i = 0; i < 10; i++) { 13 sum = sum + x[i]; 14 } 15 mean = sum / 10; 16 printf("mean = %lf\n", mean); 17 18 // 分散 19 variance = 0; 20 for (i = 0; i < 10; i++) { 21 variance = variance + (x[i]-mean)*(x[i]-mean); 22 } 23 variance = variance / 10; 24 printf("variance = %lf\n", variance); 25 26 // 標準偏差 27 standard_deviation = sqrt(variance); 28 printf("standard_deviation = %lf\n", standard_deviation); 29 30 return 0; 31 32}

投稿2020/07/20 22:57

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問