私は問題を適切に記述するのに苦労しているので、文句を許してください。与えられた反復回数の後に合計値をクリアするには?
私は、何年にもわたって毎月降雨の概要を作成するプログラムに取り組んでいます。現在、プログラムは5年間で12ヶ月間ループし、結果を印刷します。
残念ながら、私は年次合計を正しく計算する方法を見つけることができません。例:最初の12個の値(1年目)に1を入力すると、合計は12になります.2年目に同じことをすると、合計は24になります。それは値の合計を出力しているかのように見えます1年以内の合計だけでなく、すべての年から。
これは私が見ています何の要約版です:
void inputdata() {
/* variable definition: */
float Rain = 1.0;
float total = 0.0;
// Input Data
for (int year = 0; year < NUMYEARS; year++) {
for (int month = 0; month < NUMMONTHS; month++) {
printf("Enter rain for %d, %d:\n", year + 1, month + 1);
scanf("%f", & Rain);
Raindata[year][month] = Rain;
}
printf("Total rainfall: %.2f\t\n", total);
}
for (int month = 0; month < NUMMONTHS; month++) {
total = total + Rain;
}
}
最大の不満:
Do you want to input Precipitation data? (y for yes)
y
Enter rain for 1, 1:
1
Enter rain for 1, 2:
1
...
1
Enter rain for 1, 11:
1
Enter rain for 1, 12:
1
Total rainfall: 12.00
Enter rain for 2, 1:
1
Enter rain for 2, 2:
1
...
Enter rain for 2, 12:
1
Total rainfall: 24.00
を、私はこのような値以下の一つとして、別のループを構築しようとしたときには、常に0.00です私はそれがどのように数学演算を実行しているかをほとんど知ることができますが、それらを修正する方法だけではありません。あなたは、内側ループを残した直後
#define NUMMONTHS 12
#define NUMYEARS 5
#include <stdio.h>
// function prototypes
void inputdata();
void printdata();
// Global variables
// These are available to all functions
float Raindata[NUMYEARS][NUMMONTHS];
char years[NUMYEARS][5] = {
"2011", "2012", "2013",
"2014", "2015"
};
char months[NUMMONTHS][12] = {
"Jan", "Feb", "Mar", "Apr",
"May", "Jun", "Jul", "Aug",
"Sep", "Oct", "Nov", "Dec"
};
int main() {
char enterData = 'y';
printf("Do you want to input Precipatation data? (y for yes)\n");
scanf("%c", & enterData);
if (enterData == 'y') {
// Call Function to Input data
inputdata();
// Call Function to display data
printdata();
} else {
printf("No data was input at this time\n");
}
printf("Please try the Precipitation program again. \n");
return 0;
}
// function to inputdata
void inputdata() {
/* variable definition: */
float Rain = 1.0;
float total = 0.0;
// Input Data
for (int year = 0; year < NUMYEARS; year++) {
for (int month = 0; month < NUMMONTHS; month++) {
printf("Enter rain for %d, %d:\n", year + 1, month + 1);
scanf("%f", & Rain);
Raindata[year][month] = Rain;
total = total + Rain;
}
printf("Total rainfall: %.2f\t\n", total);
}
}
// Function to printdata
void printdata() {
// Print data
printf("year\t month\t rain\n");
for (int year = 0; year < NUMYEARS; year++) {
for (int month = 0; month < NUMMONTHS; month++) {
printf("%s\t %s\t %5.2f\n", years[year], months[month], Raindata[year][month]);
}
}
}
「合計」を計算するループでは、各月の金額が加算されません。先月の「NUMMONTHS」回を追加するだけです。 – Barmar
なぜ、印刷機能ではなく、入力機能で合計を印刷していますか? – Barmar
好奇心がなぜ12月の 'char month [NUMMONTHS] [12]'ですか? const char * months [NUMMONTHS] = { "Jan"、 "Feb"、 "Mar"、 "Apr"、...};を代わりに提案してください。 – chux