プログラミングの課題なのですが、どうしても解くことができません。
次の問題の
/* この部分に処理を追記する */
に当てはまる部分を教えてください。
よろしくお願いします。
以下のデータは、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ヶ月で割って年間平均気温を算出 */
/* この部分に処理を追記する */
/* 各月の気温を表示する */
/* この部分に処理を追記する */
}
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
プログラムのイメージは合っていますよ。
ただ、ちょっと考えればというか基本をある程度習得するべきところをまったく理解されていないようなので、全ソースを表示し、コメントに「訂正」と加えて置きました。
なお、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; // 追加
}
No.5
- 回答日時:
if(dTemp[i] = -99.9 && i != 0 && i != 11)
「=」は代入。
printf("%d,",dTemp[i]);
「%d」は整数型。
No.3
- 回答日時:
【とりあえず書きました。
あっているかどうかワカラン。自分で考えて修正して!!】
#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);
}
No.1
- 回答日時:
念のために聞きますが、まったくできていない、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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 非表示にしたい行をグループ化して折り畳み 4 2022/09/17 20:17
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- ガーデニング・家庭菜園 耐寒温度について。植物。 3 2022/08/03 16:36
- 妊娠 妊娠の可能性について。 1 2022/06/30 23:18
- Access(アクセス) 対象月の2桁表示について 1 2023/01/07 05:08
- Excel(エクセル) 最後の12個の修正平均を算出したい。 3 2022/04/30 18:24
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- その他(ビジネス・キャリア) 経理初心者です。 2月が決算です。回線費用のように、請求書に2月払いで2月分と記載されていても、利用 4 2023/02/15 00:03
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- その他(悩み相談・人生相談) これって… 1 2022/11/05 08:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
printf で二進表示を行いたい。
-
10個出力で改行したいのですが...
-
コマンドラインに出力した文字...
-
ブラックジャック
-
C言語で、「自然数nを入力し、n...
-
error C2143: 構文エラー : ';'...
-
scanfに文字が入力されたときに...
-
4の倍数を論理演算で表す。。
-
縦の棒グラフ
-
パスカルの三角形についてのCプ...
-
(C言語)めちゃくちゃな値にな...
-
ピラミッド表示プログラム。
-
C言語 ツェラーの公式を使った...
-
CTRL+Dでループを抜けるには
-
勝率をプログラムに
-
Visual Sutdio 2017 でのC言語...
-
%P と %X の違い
-
printf( " %2d", p * q );
-
C言語 プログラミング ごめんな...
-
printf()文の書式
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
既約分数の表示プログラム
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
printf( " %2d", p * q );
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
%P と %X の違い
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
cshの文字列操作(0埋め)
-
万年カレンダーのC言語プログラ...
-
コマンドラインに出力した文字...
-
scanfに文字が入力されたときに...
-
コンパイルエラーについて
-
ホームページをC言語で作りたい...
-
改行について 1行に何個かづ...
-
台形の面積を求めるプログラム
-
なぜgccはstdio.hをインクルー...
おすすめ情報