- 締切済み
プログラミングの課題なのですが
プログラミングの課題なのですが、どうしても解くことができません。 次の問題の /* この部分に処理を追記する */ に当てはまる部分を教えてください。 よろしくお願いします。 以下のデータは、2008年の○×市における月別平均気温である。 ただし、3月、6月、9月のデータが欠測している。欠測データには-99.9 という値が入っている。 ここで、欠測の月を前後の月の平均値に置き換えることで月別平均気温を補間し、 補間されたデータを用いて年間平均気温を計算するプログラムを作成せよ。 #include <stdio.h> void main() { double dTemp[ ] = {5.3, 4.7, -99.9, 14.6, 19.2, -99.9, 28.6, 28.6, -99.9, 19.3, 13.2, 8.6}; double dTempSum = 0.0; double dTempAvg = 0.0; int i; /* 書き出し用のヘッダーを表示させる */ printf("月別気温\n"); printf("1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月\n"); for(i = 0; i < 12; i++) { /* その月の値が欠測値なら、前後の平均値として補間する */ /* ただし、一番初めと最後のデータの補間は今回は考えなくて良いものとする */ if(/* この部分に処理を追記する */ && i != 0 && i != 11) { /* この部分に処理を追記する */ } /* 各月の気温を積算する */ /* この部分に処理を追記する */ /* 各月の気温を表示する */ if(i != 11) { /* この部分に処理を追記する */ } else { /* この部分に処理を追記する */ } } /* 積算気温を12ヶ月で割って年間平均気温を算出 */ /* この部分に処理を追記する */ /* 各月の気温を表示する */ /* この部分に処理を追記する */ }
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
プログラムのイメージは合っていますよ。 ただ、ちょっと考えればというか基本をある程度習得するべきところをまったく理解されていないようなので、全ソースを表示し、コメントに「訂正」と加えて置きました。 なお、Cは型に厳格です。よって今回は実数を扱うので2のような定数も常に実数の2.0を使うように心掛けて下さい。printf()関数はインターネットで調べれば出て来ますので、その使い方を覚えて下さい。 if の等号(==)は誰でも良くある打ち込みミスです。ご安心ください。 /* Get mean program by Mac OSX * file name: toppe.c * compile: gcc toppe.c * execuion: ./a.out */ #include <stdio.h> int main(void) { // 訂正 double dTemp[] = {5.3, 4.7, -99.9, 14.6, 19.2, -99.9, 28.6, 28.6, -99.9, 19.3, 13.2, 8.6}; double dTempSum = 0.0; double dTempAvg = 0.0; int i; /* 書き出し用のヘッダーを表示させる */ printf("月別気温\n"); printf("1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月\n"); for(i = 0; i < 12; i++) { /* その月の値が欠測値なら、前後の平均値として補間する */ /* ただし、一番初めと最後のデータの補間は今回は考えなくて良いものとする */ if(dTemp[i] == -99.9 && i != 0 && i != 11) { // 訂正 dTemp[i]=(dTemp[i-1]+dTemp[i+1])/2.0; // 訂正 } /* 各月の気温を積算する */ dTempSum += dTemp[i]; /* 各月の気温を表示する */ if(i != 11) { printf("%.2f,",dTemp[i]); // 訂正 } else { printf("%.2f\n",dTemp[i]); // 訂正 } } /* 積算気温を12ヶ月で割って年間平均気温を算出 */ dTempAvg = dTempSum / 12.0; // 訂正 /* 平均気温を表示する */ printf("平均気温:%.2f℃\n",dTempAvg); // 訂正 return 0; // 追加 }
if(dTemp[i] = -99.9 && i != 0 && i != 11) 「=」は代入。 printf("%d,",dTemp[i]); 「%d」は整数型。
- zionic
- ベストアンサー率39% (31/79)
#2です。ごめんなさい、勘違いしてましたので前の回答は忘れてください。 if文の条件をもう一度見直してみてください。 とくに、最初の条件。よくある間違いです。
- syifkm
- ベストアンサー率7% (1/14)
【とりあえず書きました。あっているかどうかワカラン。 自分で考えて修正して!!】 #include <stdio.h> void main() { double dTemp[ ] = {5.3, 4.7, -99.9, 14.6, 19.2, -99.9, 28.6, 28.6, -99.9, 19.3, 13.2, 8.6}; double dTempSum = 0.0; double dTempAvg = 0.0; int i; /* 書き出し用のヘッダーを表示させる */ printf("月別気温\n"); printf("1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月\n"); for(i = 0; i < 12; i++) { /* その月の値が欠測値なら、前後の平均値として補間する */ /* ただし、一番初めと最後のデータの補間は今回は考えなくて良いものとする */ if(dTemp[i]==-99.9 && i != 0 && i != 11) { dTemp[i]=(dTemp[i-1]+dTemp[i+1])/2; } /* 各月の気温を積算する */ dTempSum=dTempSum+dTemp[i]; /* 各月の気温を表示する */ if(i != 11) { printf("%4.2f," dTemp[i]); } else { printf("%4.2f\n" dTemp[i]); } } /* 積算気温を12ヶ月で割って年間平均気温を算出 */ dTempAvg=dTempSum/(i+1); /* 各月の気温を表示する ←「平均気温」の間違いか??*/ printf("年間平均気温\n"); printf("%4.2f\n" dTempAvg); }
- zionic
- ベストアンサー率39% (31/79)
欠測値じゃない場合の処理が抜けてませんか?
- koko_u_u
- ベストアンサー率18% (216/1139)
念のために聞きますが、まったくできていない、1バイトたりともわからない、ということですか?
補足
いえ、下記のように書いたのですが、コマンドプロンプトで実行した結果全く違った結果が出てしまいました。 ・自分の書いたソース #include <stdio.h> void main() { double dTemp[ ] = {5.3, 4.7, -99.9, 14.6, 19.2, -99.9, 28.6, 28.6, -99.9, 19.3, 13.2, 8.6}; double dTempSum = 0.0; double dTempAvg = 0.0; int i; /* 書き出し用のヘッダーを表示させる */ printf("月別気温\n"); printf("1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月\n"); for(i = 0; i < 12; i++) { /* その月の値が欠測値なら、前後の平均値として補間する */ /* ただし、一番初めと最後のデータの補間は今回は考えなくて良いものとする */ if(dTemp[i] = -99.9 && i != 0 && i != 11) { dTemp[i]=(dTemp[i-1]+dTemp[i+1])/2; } /* 各月の気温を積算する */ dTempSum += dTemp[i]; /* 各月の気温を表示する */ if(i != 11) { printf("%d,",dTemp[i]); } else { printf("%d\n",dTemp[i]); } } /* 積算気温を12ヶ月で割って年間平均気温を算出 */ dTempAvg = dTempSum / 12; /* 平均気温を表示する */ printf("平均気温:%d℃\n",dTempAvg); } ・自分の結果 月別気温 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月 0,-1717986918,-858993459,1717986912,-858993459,0,-1717986918,1717986919,1,-1717987008,1717986918,0 平均気温:858993460℃ ・目標とする結果 1月, 2 月, 3月, 4 月, 5 月, 6 月, 7 月, 8 月, 9月, 10月, 11月, 12月 5.30,4.70,9.65,14.60,19.20,23.90,28.60,28.60,23.95,19.30,13.20,8.60 年間平均気温:16.63