2011-10-11 6 views
1

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

const int numMonths = 12; 
int numYears, months, largest = 0; 
double sum = 0; 


cout << "Please enter the number of years: "; 
cin >> numYears; 
cin.ignore(); 

for (int years = 1; years <= numYears; years ++) 
{ 
    for (int months = 1; months <= numMonths; months ++) 
    { 
    double rain; 
    cout << "Please enter the rainfall in mm for year " << years << ", month " << months << "\n"; 
    cin >> rain; 
    sum += rain; 
    if (rain > largest){ 

     largest = rain; 

    } 
    cin.ignore(); 
    } 
} 

int totalMonth = numYears*numMonths; 
double avgRain = sum/totalMonth; 
cout << "Total number of months: " << totalMonth << "\n"; 
cout << "Total inches of rainfall for the entire period: "<< sum << "\n"; 
cout << "Average rainfall per month for the entire period: " << avgRain << "\n"; 
cout << "Highest rainfall was " << largest << ; 






cin.get(); 
return 0; 

ответ

3

Как о чем-то вроде:

if (rain > largest_rain){   
     largest_rain = rain; 
     largest_month = months; 
     largest_year = years; 
    } 
+0

Да, но как бы я получить фактическое название месяца, чтобы показать? Как январь, февраль и т. Д. – user566094

+0

@ user566094 Вам нужна таблица поиска. Вы можете использовать 'vector ', так как ваши индексы являются целыми числами (и вы смете на 1). –

+0

Здесь перечислено перечисление: [ссылка] (http://msdn.microsoft.com/en-us/library/2dzy4k6e (v = vs.80) .aspx). – deyur

1

Чтобы сопоставить число месяцев с именами я бы поместить их в массив строк.

string[] months = {"January","February","March"...}; 

Затем возьмите номер месяца (вычесть 1, если вы 1 индексирование) и распечатать этот индекс в массиве.

Таким образом, все вместе это выглядит следующим образом:

string [] month = {"January","February", "March"/*Fill in the rest of the months*/}; 
int largestMonthIndex = largest_month-1; 
cout << "Month that the largest rain fall occurred in: " <<month[largetMonthIndex]; 
+0

говорит мне, что «<<» оператор не найден, который принимает правый тип операнда «std :: string» (или нет приемлемого преобразования – user566094

+0

@ user566094: Это означает, что ваш исходный файл отсутствует либо '#include 'или' #include '. – ildjarn

+0

Эй, вы знаете, как я могу выполнить проверку ввода пользователем, которая реализует, что пользователь не может ввести отрицательное значение для дождя? – user566094

Смежные вопросы