2017-09-05 67 views
-7

我被賦予一項任務來製作一個程序,該程序允許用戶將12個月的每個月的總降雨量輸入到一個雙精度數組中。C++循環在第一次迭代時被卡住

程序應該計算並顯示年份的總降雨量,月平均降雨量以及最高和最低量的月份。

我的教授要求我簡單地修改她爲我們提供的骨架。程序編譯得很好,問題是在第一次迭代中它顯示了第一個月,但是停在那裏。

不知道我在做什麼錯,有什麼想法?

以下是有關區域的代碼。

void getMonthlyRainfalls(double rainfallsArr[], int size, int month){ 
cout << "Please type the rainfalls occurring in the month " << (month+1) << ": " ; 

do{ 
    if (! cin){ 
    cin.clear(); 
    cin.ignore(1124, '\n'); 
    } 

    for (int i = 0; i < size; i++) 
     cin >> rainfallsArr[month]; 

    if (!cin || rainfallsArr[month] < 0) 
     cout << "Please retype the rainfalls occurring in the month " << (month+1) << ": " ; 
    } while (!cin || rainfallsArr[month] < 0); 
} 
+0

爲什麼你循環大小的時間來獲得一個月的降雨量,並將其重複存儲在覆蓋前一個相同的位置?如果它不是12,我很困惑什麼大小代表。也許你應該在循環中加入值,如果每月有多個降雨總數的話。 – drescherjm

+0

這是有點問題,我似乎無法弄清楚如何解決它我知道問題是與循環,但我不能看到我出錯的地方 –

+0

我會擺脫兩個循環,但我仍然不知道什麼大小是。 – drescherjm

回答

1

這是你的任務的解決方案

#include <iostream> 
using namespace std; 
int main() 
{ 
double rain_fall[12] , maxi=0 , mini , sum=0; // maxi for the highest 
//amount mini for the lowest 
for(int i=0; i<12; i++) 
{ 
    cout<<"please enter the total amount of rainfall in the month number " 
    <<i+1<< endl; 
    cin>>rain_fall[i]; 
    if(i==0) 
     mini=rain_fall[i]; // happened just once to give it an initial 
    value from the array 
    if(maxi<rain_fall[i]) // the highest amount 
     maxi=rain_fall[i]; 
    else if (mini>rain_fall[i]) 
     mini=rain_fall[i]; // the lowest amount 
    sum+=rain_fall[i]; 
} 
cout<<"the total amount in the year is : "<<sum<< endl; 
cout<<"the average amount per month is : "<<sum/12<< endl; 
cout<<"the highest amount in the year is : "<<maxi<< endl; 
cout<<"the lowest amount in the year is : "<<mini<< endl; 
return 0; 
} 

什麼,我在這裏做
我做了一個快捷方式通過compering,以獲得最高和最低值時 採取從用戶輸入和這裏是代碼的解釋..

首先我從用戶的輸入,然後爲第一個輸入,只是一次我給微型值cuz它必須給我一個值從我輸入數組cuz如果我們爲它指定一個零,並且所有的月份數量都大於零,但EX的最低數量是2,這將成爲一個錯誤,因爲if語句會給我最低的金額,如果0> [什麼值] 每次它將是錯誤的,所以最小值將保持其中的零並顯示爲最低值,但實際上我們沒有數組中的零,最低值爲2,因爲我們假設因此,mini應該有一個存在於數組中的值,它包含數量爲

之後,我們對它做一個if語句以與輸入進行比較以保存其中的最大值,並且我們分配了一個零,因爲任何東西都會大於零,所以如果(0 < [無論什麼價值])將進展順利,然後假如我們已經獲得最大價值

後,我們在和可變的輸入加在一起後,在COUT語句獲取的所有月份總量

獲得每月平均量U除以每12個總[月的數量]

+4

這個答案是缺乏解釋。 –

+0

我上面寫過。 –

-1

while(cin & & rainfallsArr [month]> 0);

+2

你能爲你的答案提供更多的上下文嗎? – alexi2