我的代码:http://pastebin.com/qjFd6KXb
我有一个课程作业要求我创建一个程序,该程序将输出一个简单的乘法问题,用户必须在三次或更少的时间内回答。其中一个要求是程序检查用户猜测是否是有效数字。我的教授希望我们在代码中使用这个方法:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char c;
bool valid = false;
int i;
while (!valid)
{
cout << "Enter an int " << endl;
cin >> i;
valid = true;
if (cin.peek() != '\n' || cin.fail()) // checks if the input data was correct or not
{
valid = false;
cin.clear(); // clears the error flags
cin.ignore(100, '\n'); // ignores up to 100 characters in the cin stream
}
}
}
我的问题出现在我的代码第57行。没有额外的while循环和if语句来检查正确性,它运行正常。然而,无论我尝试什么,当我实现该部分时,它要么变成无限循环,要么无法获胜。如果有人能让我知道这有什么问题我会非常感激,因为我不能为我的生活想出这一点。
答案 0 :(得分:1)
只是看看你的代码......我想
tries = tries + 1; // Adds one to the tries counter
的范围错误
while ((choice != 1) || (choice != 1) || (choice != 1));
cout << "Try to solve the problem!\n"; // Provides instruction to the user.
while ((result != guess) && (tries < maxtries))
{
}
tries = tries + 1; // Adds one to the tries counter
}
应该是
while (choice != 1);
cout << "Try to solve the problem!\n"; // Provides instruction to the user.
while ((result != guess) && (tries < maxtries))
{
tries = tries + 1; // Adds one to the tries counter
}
}
答案 1 :(得分:0)
您的支票可以这样实现:
std::cin >> i;
while( std::cin.fail() ) {
std::cout << "Bad Input\nEnter an Integer, foo: ";
std::cin.clear();
std::cin.ignore('256','\n');
std::cin >> i;
}
我不确定你为什么要达到峰值并寻找行尾