Напишите программу, которая позволяет пользователю вводить общее количество осадков за каждый из 12 месяцев (начиная с января) в виде массива двойников.

Я новичок, и у меня возникают проблемы с отображением самого низкого месяца, но отображается самый высокий месяц.

Вот код:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    const int num_months = 12;
    double rainfall[num_months];
    double total = 0;
    double average = 0;
    double least = rainfall[0];
    double high = rainfall[0];
    string highest_month;
    string lowest_month;
    double high_num;
    double low_num;
    string months[num_months] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };

    for (int count = 0; count < num_months; count++) {
        cout << "Enter rainfall for " << months[count] << ":";
        cin >> rainfall[count];
        while (rainfall[count] < 0) {
            cout << "invalid data(negative rainfall) --retry" << endl;
            cin >> rainfall[count];
        }
    }

    for (int count = 0; count < num_months; count++)
        total += rainfall[count];
    average = total / 12;

    high_num = rainfall[0];
    low_num = rainfall[0];
    for (int count = 0; count < num_months; count++) {
        if (rainfall[count] < low_num) {

            lowest_month = months[count];
            low_num = rainfall[count];
        }
    }
    for (int count = 0; count < num_months; count++) {
        if (rainfall[count] > high_num) {
            highest_month = months[count];
            high_num = rainfall[count];
        }
    }

    cout << "Total rainfall: " << total << endl;
    cout << "Average rainfall: " << average << endl;
    cout << "Least rainfall in: " << lowest_month << endl;
    cout << "Most rainfall in: " << highest_month << endl;
}
c++
0
What Is This 3 Май 2021 в 02:06

1 ответ

Лучший ответ

Вы забыли указать начальное значение highest_month и lowest_month, поэтому они остаются пустыми, когда в первый месяц выпадает наибольшее или наименьшее количество осадков.

Дайте им начальные значения для исправления:

high_num = rainfall[0];
low_num = rainfall[0];
highest_month = months[0]; // add this
lowest_month = months[0]; // add this

Другой способ - добавить некоторое значение к начальным значениям high_num и low_num, так что в циклах должны быть обновления.

high_num = rainfall[0] - 1; // at least rainfall[0] is higher than this
low_num = rainfall[0] + 1; // at least rainfall[0] is lower than this
2
MikeCAT 2 Май 2021 в 23:10