0

我的代码: 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 语句来检查正确性,它运行良好。但是,无论我尝试什么,当我实现该部分时,它要么变成无限循环,要么不可能获胜。如果有人能让我知道这有什么问题,我将不胜感激,因为我一生都无法弄清楚这一点。

4

2 回答 2

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
   }  
}
于 2013-09-19T13:37:59.657 回答
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;
    }

我不确定您为什么要达到顶峰并寻找行尾

于 2013-09-19T13:38:07.750 回答