• ベストアンサー

エラー:浮動小数点の不正な使用

/*月ごとの平均気温・降水量を構造体の配列に格納した後、 */ /*年間平均気温、年間平均降水量を求めるプログラムを作成せよ。*/ #include<stdio.h> void main(void) { int i; double total_kion, total_suiryo, av_kion, av_suiryo; struct YEAR_DATA{ double kion[12]; double suiryo[12]; }; struct YEAR_DATA data[12] = {{3.6, 50},{4.3, 61},{7.5, 98},{13.5, 153},{18.0, 162},{21.7, 210}, {25.6, 218},{26.8, 170},{22.8, 209},{16.9, 121},{11.4, 74},{6.2, 48}}; for(i=0 ; i<12 ; i++){ total_kion += data[i].kion; total_suiryo += data[i].suiryo; } av_kion = total_kion / 12; av_suiryo = total_suiryo /12; printf("年間平均気温 %lf\n", av_kion); printf("年間平均降水量 %lf\n", av_suiryo); } 構造体のところを勉強しています。 上の問題を解いてみたのですが、for文の中の2行に「浮動小数点の不正な使用」というエラーが起こってしまい、答も違っています。 どこが間違っているのか、ご指摘お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#74310
noname#74310
回答No.2

Visual C++ 2003 でコンパイルした結果 誤りは以下 struct YEAR_DATA{ double kion; double suiryo; }; total_kion=0.0; total_suiryo =0.0; 年間平均気温 14.858333 年間平均降水量 131.166667

その他の回答 (2)

  • TALLY-HO
  • ベストアンサー率29% (103/354)
回答No.3

for(i=0 ; i<12 ; i++){ total_kion += data[i].kion; total_suiryo += data[i].suiryo; } この total_kion と total_suiryo を初期化してませんよ。 double total_kion; と宣言した状態では、メモリ領域を確保しただけで そのときのメモリ状態は保障されていません。 そこに += を使って書き込むと、初期値(未定)に 12ヶ月分の気温を足した値となり、答えが違ってきます。 for文の前に total_kion = 0; total_suiryo = 0; を入れましょう。

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.1

struct YEAR_DATA{ double kion[12]; double suiryo[12]; }; とYEAR_DATAの要素が配列で定義されてるのに、 forの中では、 total_kion += data[i].kion; total_suiryo += data[i].suiryo; と、配列として参照してないからでは?

関連するQ&A