2014-10-08 63 views
0

我正在嘗試編寫代碼,它具有較低的限制和較高的限制(以攝氏度爲單位)和增量,並且吐出顯示轉換爲華氏度的表格。反正我遇到問題的是輸入的防彈。Temp轉換輸入防彈?

這裏是我的代碼

int main() { 

double lowerLimit=0; 
double higherLimit=0; 
double step=0; 

cout<<"Please give in a lower limit, limit >= 0: 10\n\n"; 
cin>>lowerLimit; 
while(!(cin >> lowerLimit) || lowerLimit < 0 || lowerLimit > 500) 
{ 
    cout << "invalid input!\n"; 
    cin.clear(); 
    cin.ignore(numeric_limits<int>::max(), '\n'); 
} 

cout<<"Please give in a higher limit, 10 > limit <= 500: 20 \n\n"; 
cin>>higherLimit; 
while(!(cin >> higherLimit) || higherLimit <= 10 || higherLimit > 500) 
{ 
    cout << "invalid input!\n"; 
    cin.clear(); 
    cin.ignore(numeric_limits<int>::max(), '\n'); 
} 
cout<<"Please give in a step. 0 < step <= 10: 4\n\n"; 
cin>>step; 
while(!(cin >> step) || step <= 0 || step >10) 
{ 
    cout << "invalid input!\n"; 
    cin.clear(); 
    cin.ignore(numeric_limits<int>::max(), '\n'); 
} 

cout<<lowerLimit<<higherLimit<<step<<"\n\n"; 
cout<<"Thanks!"; 



return 1; 
} 

輸出類似於

Output

什麼情況是,它要求我爲LOWERLIMIT,當我鍵入的東西它沒有做任何事情,它只是停留只有當我再次寫入它繼續。 因此,當我把8它沒有做什麼,然後我把它繼續。與higherLimit相同,我輸入10沒有任何反應,然後我輸入100並繼續。

Coudnt弄清楚該怎麼做。我嘗試了不同的循環,如果語句不起作用。

最後一點。不,這不是HW。

我不需要你告訴我,我不應該這樣寫,我只需要明白髮生了什麼問題。

如果有什麼你認爲我應該告訴你們請評論它,我會編輯請不要只是給-1和離開。

+2

在while循環之前總是有一個cin操作,因此它第一次「什麼都不做」。它在變量中讀取它,然後在while條件內點擊第二個'cin >> var'語句。刪除循環條件以外的。 – Borgleader 2014-10-08 15:08:22

回答

1

在每個while之前刪除cin。您目前所做的是您只需輸入一次,因爲while中的條件也有cin,您需要重新輸入。因此,輸入兩次

+0

哦,謝謝你的對不起,我沒有意識到,非常感謝你 – Ali 2014-10-08 17:04:24