边做边循环的麻烦
Trouble with 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 << "nn" << "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,也不会关闭程序(return(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-entern";
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++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 为什么在这个代码结束循环中没有得到结束
- 在基于范围的for循环中使用结构化绑定声明
- 我的期末考试遇到了麻烦.代码不断循环回到我的订购菜单,不会显示我的总价
- 循环麻烦.C 简单游戏
- 循环时嵌套的麻烦
- 边做边循环的麻烦