2014-10-08 51 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