gpt4 book ai didi

c++ - do-while-loop 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:42:58 26 4
gpt4 key购买 nike

我正在尝试编写一个计算素数的程序,但我在使用 do-while-loop 时遇到问题。

代码:

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
unsigned long int lower_limit;
unsigned long int upper_limit;

cout << "\n" << "Program calculates prime numbers in a given range between 2 and 4.294.967.295.";
cout << "\n" << "Input range in which prime numbers are to be calculated... ";

do
{
cout << "\n\n" << "Lower Limit:\t"; cin >> lower_limit;
cout << "\n" << "Upper Limit:\t"; cin >> upper_limit;

if(lower_limit >= upper_limit)
{
cout << "\nInvalid Input: Value of Upper Limit has to be bigger than value of Lower Limit.";
cout << "\nSelect new numbers.";
}

if(!(cin >> lower_limit) || !(cin >> upper_limit))
{
cout << "\nInvalid Input: Values of Lower Limit and Upper Limit have to be integers.";
cout << "\nSelect new numbers.";
}

}while(lower_limit >= upper_limit || !(cin >> lower_limit) || !(cin >> upper_limit));

return(0);
}

如果我输入值来触发 Lower Limit >= Upper Limit 它会正确触发第一个错误,但之后不会重复 do-while-loop 并且不会关闭程序(返回(0)) 要么... 所以程序没有重复 do-while-loop,程序也没有退出它。我真的不知道它在那里实际做了什么。

如果我输入值来触发 !(cin >> lower_limit) || !(cin >> upper_limit)(“adfd”或类似的)整个程序只是精神上快速重复 do-while 循环,甚至忽略 cin >> lower_limit;cin >> upper_limit; 语句。

有没有人有想法可以帮助我?

干杯!

最佳答案

有一点是,如果你得到无效输入,你需要通过以下方式清除错误状态:

cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

您的循环应更改为:

do
{
while ( !(cin >> lower_limit >> upper_limit) ) {
cout << "Invalid input, Please re-enter\n";
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}

if(lower_limit >= upper_limit)
{
cout << "\nInvalid Input: Value of Upper Limit has to be bigger than value of Lower Limit.";
cout << "\nSelect new numbers.";
}


} while(lower_limit >= upper_limit);

关于c++ - do-while-loop 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20718161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com