Двойные переменные выходы 32767 всегда вместо ввода пользователя - PullRequest
0 голосов
/ 02 июня 2019

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

Я попробовал следующий код.

#include<iostream>
using namespace std;

int main(){
    const int numMonths = 3;
    double monthlyRain[numMonths]={0,0,0};
    string monthName[numMonths]= {"Jan", "Feb", "Mar"};
    int count = 0;
    int indexWettest = 0;
    int indexDriest = 0;
    double  yearTotal=0, monthlyAverage=0;
    double monthHighest;
    double monthLowest;

    monthLowest = monthlyRain[0];
    monthHighest = monthlyRain[0];


    // enter monthly rain;
    for (int count=0; count < numMonths; count++){
        cout << "Please enter amount of rain in " << monthName[count] << endl;
        cin >> monthlyRain[count];
    }


    // print month and corresponding rain amount;
    cout << "Month --- Rain(mm)" << endl;
    for (int count = 0; count < numMonths; count++){
        cout << monthName[count] << " " << monthlyRain[count] << endl;
    }


    // calculate year total;
    for (int count = 0; count < numMonths; count++){
        yearTotal += monthlyRain[count];
    }

    // calculate average monthly rainfall;
    monthlyAverage = yearTotal/numMonths;

    // find month with lowest rainfall;


    // find month with highest rainfall;

    for (int count = 0; count < numMonths; count++){    
        if (monthlyRain[count] > monthHighest){
            monthHighest = monthlyRain[count+1];
            indexWettest = count;
        }
    }


// PROBLEM IS HERE!;
    for (int count = 0; count < numMonths; count++){
        if (monthlyRain[count] < monthLowest){
            monthLowest = monthlyRain[count];
            indexDriest = count;

        }

    }

    cout << "Total yearly rain fall is: " << yearTotal << endl;
    cout << "Average monthly rainfall is: " << monthlyAverage << endl;
    cout << "The driest month is " <<  monthName[indexDriest] << " with rain amount of  " << monthLowest << endl;
    cout << "The wettest month is " <<  monthName[indexWettest] << " with rain amount of  " << monthHighest << endl; //<< monthName[indexWettest];

return 0;
}

Ожидаемый результат - ввод пользователя.

1 Ответ

1 голос
/ 02 июня 2019

Чтение предупреждений компилятора.

main.cpp:35:19: warning: 'yearTotal' may be used uninitialized in this function [- 
Wmaybe-uninitialized]

yearTotal += monthlyRain[count];

Строка, которая объявляет yearTotal должна быть двойной год Итого = 0 ;

То же самое с другими переменными. Всегда инициализируйте их.

...