2012-02-07 2 views
1

Я пытаюсь написать простую программу, используя ТОЛЬКО for loop (заявление разрешено, я думаю) И мне не удается получить самую высокую дату снега, «рассчитанную» из кучи пользовательских входов.простая логика для цикла C++

Эта программа записывает количество входных данных, которое выпало на несколько дней в текстовый файл. Я также должен указать самый высокий показатель снега, который упал, но не (?) Знают, как это сделать в цикле for.

for (dayNumber = 1; dayNumber <= numOfSnowDays; dayNumber++) 
    { 
     mostSnowDay = dayNumber; 
     cout << "Day number: " << dayNumber << endl; 
     cout << "Enter amount of snow: " << endl; 
     cin >> amtOfSnow; 
     totalSnow = totalSnow + amtOfSnow; 
     outFile << setfill(' ') << setw(15) << dayNumber << setw(25) << setprecision(2) << amtOfSnow << endl; 

     if (dayNumber == 1) 
     { 
      mostSnowDay = dayNumber;        
     } 
     else if (amtOfSnow < mostSnowDay) 
     { 
       //dont know what to put here or even if this is right. 
     } 

    }; 
+0

проверить мой выбор, я думаю, вы пропустили «не» там .... Kindof меняет смысл предложения :) – littleadv

+1

снега, кажется, популярная домашнюю тема сегодня :-) HTTP://stackoverflow.com/questions/9181299/outfile-c-now-writing-to-output-text/9182491 –

ответ

3

Вам нужны некоторые дополнительные переменные там:

if (dayNumber == 1) 
{ 
    mostSnowDay = dayNumber; // default - most amount of snow in first day 
    mostAmtOfSnow = amtOfSnow; // 
} 
else if (amtOfSnow > mostAmtOfSnow) //if subsequent day has more snow 
{ 
    mostSnowDay = dayNumber;  //mark the day 
    mostAmtOfSnow = amtOfSnow; //change largest amount of snow 
} 

EDIT: Кредит Dan F. Удалите mostSnowDay = dayNumber; инструкцию в начале цикла, он будет повторно инициализировать переменную каждый раз, когда цикл входит.

+2

Он также должен удалить строку 'mostSnowDay = dayNumber;' от вершины петли. –

+0

oh ok Я думаю, что сейчас это работает, позвольте мне проверить – user1193717

+1

@ DanF Я пропустил это, спасибо. Под редакцией! –

0

Вы должны начать с двух переменных за пределами вашего для петли, что следить за maxSnowfall и maxSnowfallDate:

int maxSnowfallDate; 
    int maxSnowfall; 

После того как в течение цикла, то вообще будет тест, чтобы увидеть, если новый максимум день имеет и если да, то вам нужно записать новый макс и дату нового макс.

if(curSnowfall > maxSnowfall) { 
    maxSnowfall = curSnowfall; 
    maxSnowfallDate = dayNumber; 
    } 

Распространено просто инициализировать maxSnowfall 0 вне для цикла и проверить каждый раз, но это звучит как задание было использовать технику, которая не присваивала изначально произвольный (в данном случае 0). Вместо этого вы просто назначаете первый прогон через цикл, а затем проверяете новый макс при каждом последующем прогоне цикла.

if(dayNumber == 1) { 
    maxSnowfallDate = dayNumber; 
    maxSnowfall = curSnowfall; 
} else { 
    if(curSnowfall > maxSnowfall) { 
    maxSnowfall = curSnowfall; 
    maxSnowfallDate = dayNumber; 
    } 
} 
Смежные вопросы