2015-03-05 5 views
0

Как и названия, я получаю случайные научные числа, когда храню их в массиве и пытаюсь их вывести. Я не уверен, почему они меняются, поскольку никаких операций с числами не было. Из-за меняющихся чисел я получаю неправильную температуру Фаренгейта.Получение случайных научных чисел вместо входов

Пример ввода: дни 0-6 = 12 Получаю воскресенье = 0, понедельник = 1.32657e. и т.д. Числа являются случайными, даже не то же самое, хотя вход остается один и тот же

int main() 
{ 
    const int DAYS_OF_WEEK = 7; 
    const double MAXIMUM_TEMPERATURE = 60; 
    const double MINIMUM_TEMPERATURE = -90 ; 
    double temperature; 
    int dayCount; 
    double fahrenheit; 
    double temperatures[6]; 
    string daysOfWeek[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};//string array for the days of the week 

    for(int dayCount = 0; dayCount < DAYS_OF_WEEK; dayCount++) 
    { 
     cout << "Please enter the Temperature for " << daysOfWeek[dayCount] << " in Celsius: "; // re-prompt for temperature 
     cin >> temperature; 

     while(cin.fail())// checks to see if cin failed 
     { 
      cin.clear(); 
      cout << "\nInvalid input. Only numeric values, please try again. "; // re-prompt 
      cin >> temperature; // try to get the value again 
      fflush(stdin); //clear input buffer 
     }//end while 

     if(temperature > MAXIMUM_TEMPERATURE || temperature < MINIMUM_TEMPERATURE) 
     { 
      cout << "\nInvalid input. Temperature must be between " << MINIMUM_TEMPERATURE <<" and " << MAXIMUM_TEMPERATURE <<". Please try again." << endl;// re-prompt user for temp between ranges 
      cin >> temperature; 
     } 
     else 
     { 
      temperature = temperatures[dayCount]; 
     }//end else 
    }//end for 
    cout << "Temperatures for the Week.\n_________________________________________________"; 

    for (int dayCount = 0; dayCount < DAYS_OF_WEEK; dayCount++) 
    {   
     cout << "\nTemperature for " << daysOfWeek[dayCount] << " in Celsius is: " << temperatures[dayCount]; 
     fahrenheit = (5.0/9.0) * (temperatures[dayCount] + 32); 
     cout << "In Fahrenheit it is:" << fahrenheit; 
    } //end for 

    return 0; 
}//end main 
+0

в вашей строке 'if (temperature> MAXIMUM_TEMPERATURE ...' вы должны сделать это в цикле 'while' и избавиться от' else' – mstbaum

+0

@mstbaum. Просто сделал это, прежде чем вы его прокомментировали, но программа теперь вылетает после все 7 temps были введены – Ryan

+0

См. комментарий @ G.Ko ниже ответа – mstbaum

ответ

0

Я предполагаю, что в этой строке

  { 
      temperature = temperatures[dayCount]; 
     }//end else 

вы имели в виду другое направление

temperatures[dayCount] = temperature; 

так как назначение - правая сторона в левую сторону.

Причина для значений мусора заключается в том, что температуры не были инициализированы и имели значения мусора. На протяжении всего процесса вы не изменяли значения этого массива из-за ошибки выше.

+0

В этом была проблема -_-. Спасибо, что помогли мне с моей глупостью. – Ryan

+0

Буду признателен, если вы пометите этот ответ как принято :) –

+0

Будет ли он, как только он позволит мне – Ryan

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