電子書籍の厳選無料作品が豊富!

/*月ごとの平均気温・降水量を構造体の配列に格納した後、 */
/*年間平均気温、年間平均降水量を求めるプログラムを作成せよ。*/

#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行に「浮動小数点の不正な使用」というエラーが起こってしまい、答も違っています。
どこが間違っているのか、ご指摘お願いします。

A 回答 (3件)

Visual C++ 2003 でコンパイルした結果


誤りは以下
struct YEAR_DATA{
double kion;
double suiryo;
};
total_kion=0.0;
total_suiryo =0.0;
年間平均気温 14.858333
年間平均降水量 131.166667
    • good
    • 2

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;
を入れましょう。
    • good
    • 0

struct YEAR_DATA{


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!