- ベストアンサー
C言語の最高気温プログラムの要約
- C言語で最高気温プログラムを作成した際に、分散や標準偏差などの計算方法やルートの取り扱いについてわからない箇所があります。
- プログラムの中で、一週間の最高気温の最大値、最小値、平均値、分散、標準偏差、中央値を計算しています。
- ルートの計算方法や標準偏差の計算方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
C言語(というか標準Cライブラリー)においてルート(平方根)を算出してくれる関数はdouble sqrt(double)です。プロトタイプ宣言はmath.hにあります。math.hをインクルードしてsqrt()を使用しましょう。
その他の回答 (1)
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
#1さんの指摘の他、あなたのプログラムミスを指摘します。 1)整数i に %f は誤りです。%d を使いましょう。 for(i=0; i < 7 ; i++){ printf("%f INPUT the Maximam tempreture. : ", i + 1); ↓ printf("%d INPUT the Maximam tempreture. : ", i + 1); 2)0 は整数です。実数表記の avg=0.0 を使いましょう。 avg = 0; ↓ avg=0.0; 3)平均値の avg なら、後の計算のためにきちんと求めておきましょう。 printf("The Average Temperature is : %f .\n", avg/7); ↓ printf("The Average Temperature is : %f .\n", avg/=7); 4)最小、最大値は初期値を使うようにしましょう。 min = 1000000; max = -1000000; ↓ min=max=temp[0]; 5)また、最小値が求められたら最大値処理は不要です。 for(i=0; i < 7; i++){ if(min > temp[i]) min = temp[i]; if(max < temp[i]) max = temp[i]; } ↓ for(i=1; i < 7; i++){ if(min > temp[i]) min = temp[i]; else if(max < temp[i]) max = temp[i]; } 6)無駄な繰り返しは避けましょう printf("The variance is : %f\n", ((temp[0]-avg/7)*(temp[0]-avg/7)+(temp[1]-avg/7)*(temp[1]-avg/7)+(temp[2]-avg/7)*(temp[2]-avg/7)+(temp[3]-avg/7)*(temp[3]-avg/7)+(temp[4]-avg/7)*(temp[4]-avg/7)+(temp[5]-avg/7)*(temp[5]-avg/7)+(temp[6]-avg/7)*(temp[6]-avg/7))/7); ↓ 分散について勉強してからC記述するようにしましょう。 http://www.geocities.jp/cgengor/arg03.html