2015-12-05 4 views
0

Итак, я собираю эту программу, которая принимает 4 значения за каждый месяц года. Единственная проблема, с которой я столкнулась, заключается в том, что после того, как я ввел последний ввод за декабрь, цикл продолжается и начинается до января. Что я забываю?Цикл for продолжает цикл

#include <iostream> 
#include <iomanip> 

using namespace std; 

enum Month {January,February,March,April,May,June,July,August,September,October,November,December }; 

void displayMonthName (Month); 

struct Airport 
{ 
int numLanded; 
int numDeparted; 
int mostLanded; 
int leastLanded;  

}; 

int main() 
{ 
int count; 
const int MAX = 12; 
double total = 0.0; 
double average; 

Airport year[MAX]; 

Month months; 


for (count = 0 ; count < MAX ; count++) 
{ 
    for (months = January; months <= December ; months= static_cast <Month>(months + 1))  
     { 
      cout<< "Enter the number of planes landed in "; 
      displayMonthName(months); 
      cout<<"\t"; 
      cin>>year[count].numLanded; 

      cout<< "Enter the number of planes that landed in "; 
      displayMonthName(months); 
      cout<<"\t"; 
      cin>>year[count].numDeparted; 

      cout<< "Enter the greatest number of planes that landed on a single day in "; 
      displayMonthName(months); 
      cout<<"\t"; 
      cin>>year[count].mostLanded; 

      cout<< "Enter the least number of planes that landed on a single day in "; 
      displayMonthName(months); 
      cout<<"\t"; 
      cin>>year[count].leastLanded; 

      cout << endl; 

     } 
} 

Вот функция void, но я уверен, что это не имеет к этому никакого отношения.

void displayMonthName(Month m) 
{ 
switch (m) 
{ 
    case January : cout<< "January"; 
         break; 
    case February : cout<< "February"; 
         break; 
    case March  : cout<< "March"; 
         break; 
    case April  : cout<< "April"; 
         break; 
    case May  : cout<< "May"; 
         break; 
    case June  : cout<< "June"; 
         break; 
    case July  : cout<< "July"; 
         break; 
    case August  : cout<< "August"; 
         break; 
    case September : cout<< "September"; 
         break; 
    case October : cout<< "October"; 
         break; 
    case November : cout<< "November"; 
         break; 
    case December : cout<< "December";     
} 
} 
+0

Пробовал. Это только заставило его полностью игнорировать декабрь и продолжить с января. –

+0

Возможный дубликат [Что произойдет, если вы статируете \ _cast недопустимым значением для класса enum?] (Http://stackoverflow.com/questions/18195312/what-happens-if-you-static-cast-invalid-value-to- enum-class) – LogicStuff

+0

Да, но кроме того, вы полностью забываете, что только что писали. 'int x = 1;' - почему 'x' равно' 1'? – LogicStuff

ответ

2

Поскольку ваши for петли вложены вы в основном цикл 12 * 12 = 144 раз. Внешние петли цикла 12 раз и на 1 внешний контур вы петли 12 раз в месяц. Возможно, это не так.

+0

Так как я могу сделать это всего лишь 1 для цикла? –

+0

Сделайте его одним для цикла. – LogicStuff

0

Вы, кажется, двадля петли. Код просил бы 12 лет на самом деле, я думаю, это не то, что вы хотели. Я бы добавил это как комментарий, но я не могу (моя репутация слишком низкая!).

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