したいこと
c言語を用いて以下の問題を解きたい。自分である程度やってみたが正解の出力の形にどうしてもならず。アドバイスをいただきたいです。
問題
ある配列にはある12月分の気温データが入っているので、それぞれの”月”、”気温データの中身”、”先月とのデータの差”を以下の形で出力せよ。(これを12月分)
*データの中身はソースコードに入っています。
必ずこのような配列形式でデータを代入します。データは配列にある12個のものです。
申しわけないです。今回のデータは以下に示すような配列形式になっていて出力の計算結果から見てもわかる通りで、論理的に変な内容となっています。ご指摘していただきありがとうございます。
自分の書いたコード
sampl.c
1 2#include <stdio.h> 3 4int main(void) 5{ 6 double tana[12] = { 7 7.7, 4.9, 8.4, 14.3, 18.2, 22.3, 24.8, 27.7, 24.2, 16.6, 9.6, 5.9 8 }; 9 10 int i; 11 int j; 12 int k; 13 int x = 11; 14 printf("month\n"); 15 16 for (i=0;i<12;i++){ 17 printf("%d",i+1); 18 printf("\n"); 19 } 20 printf("temperature\n"); 21 22 for (j=0;j<12;j++){ 23 printf("%.1f",tana[j]); 24 printf("\n"); 25 } 26 printf("change\n"); 27 28 for (k=0;k<12;k++){ 29 printf("%.1f\n",tana[k] - tana[x]); 30 x=k; 31 } 32 33 34 return 0; 35} 36
てな感じです。最初は安直に三重for分で回そうと思ったんですが出力があまりにも長くて変えました。
出力結果
month 1 2 3 4 5 6 7 8 9 10 11 12 temperature 7.7 4.9 8.4 14.3 18.2 22.3 24.8 27.7 24.2 16.6 9.6 5.9 change 1.8 -2.8 3.5 5.9 3.9 4.1 2.5 2.9 -3.5 -7.6 -7.0 -3.7
おそらく計算結果はあっていると思うのでこれをいかにうまく横並びに表示するかです。
しかもいい感じに行間も空いています。安直にすべてをfor分で3重に回してもダメなのはわかりました....
まとめ
初めにも書いたように、正解結果になるようなコードの改善点やアドバイスを教えていただきたいです。
まだまだ未熟なもので、何か至らない点があればよろしくお願いします。
どうか皆様のお力をお借りさせてもらいたいです。
変更点
\tとスペースを使って強引に中央ぞろえにしたのですが、もっときれいに
かける方法ってありませんでしょうか。
#include <stdio.h> int main(void) { double tana[12] = { 7.7, 4.9, 8.4, 14.3, 18.2, 22.3, 24.8, 27.7, 24.2, 16.6, 9.6, 5.9 }; int i; int y = 0; int x = 11; printf("month\ttemperature\tchange\n"); for (i=0;i<12;i++){ y=i; printf("%d\t %.1f\t %.1f\t",i+1,tana[i],tana[y]-tana[x]); printf("\n"); x=y; } return 0; }
month temperature change 1 7.7 1.8 2 4.9 -2.8 3 8.4 3.5 4 14.3 5.9 5 18.2 3.9 6 22.3 4.1 7 24.8 2.5 8 27.7 2.9 9 24.2 -3.5 10 16.6 -7.6 11 9.6 -7.0 12 5.9 -3.7
回答2件
あなたの回答
tips
プレビュー