Как исправить подсказку для ввода C ++ (Basic) - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь написать цикл так, чтобы я запрашивал у пользователя ввод до 4 раз, у меня проблема в том, что если пользователь вводит что-то отличное от ожидаемого двойного значения (для оценки), мне нужно вывести сообщениечто это был неправильный тип.Я хочу вывести это сообщение и при этом запросить и получить еще 4 попытки оценки.

#include <iostream>
using namespace std;


int
main ()
{

 double estimate; 
 double increment;
 int numRows; 

 const int minRows = 1;
 const int maxRows = 100; 
 const double minInc = 0.1;
 const double maxInc = 10.0; 
 const double minEst = -10.0; 
 const double maxEst = 10.0; 

 string inputFile;
 int numTries = 0;



 while (numTries < 4) 
{
   numTries++;
   cout << "Enter initial estimate of root : "; 
   cin >> estimate; 

   if (!(cin.fail())) 
   { 
     if ((estimate >= minEst) && (estimate <= maxEst))
     {
       break;
     }
     else
     {
       if (numTries == 4)
       { 
         cout << "ERROR: Exceeded max number of tries entering data" << endl;
         return 0;
       }
       cout << "" << endl;
       cout << "Value you entered was not in range\n";
       cout << fixed << setprecision(3) << minEst << " <= initial estimate <= " << maxEst << endl;
     }
   }
   else
   {

   cout << "The initial estimate was not a number\n";
   cin.clear();

   }
}

}

Результат этого кода:

Enter initial estimate of root : y
The initial estimate was not a number
Enter initial estimate of root : The initial estimate was not a number
Enter initial estimate of root : The initial estimate was not a number
Enter initial estimate of root : The initial estimate was not a number

Я хочу:

Enter initial estimate of root : y
The initial estimate was not a number
Enter initial estimate of root : 

И пользователь должен ввести следующее значение!

1 Ответ

0 голосов
/ 03 февраля 2019

Вам также необходимо использовать недопустимый символ.Для этого добавлен cin.get(), для случая после ошибки, как показано в коде ниже.

#include <iostream>
using namespace std;


int
main ()
{

    double estimate;
    double increment;
    int numRows;

    const int minRows = 1;
    const int maxRows = 100;
    const double minInc = 0.1;
    const double maxInc = 10.0;
    const double minEst = -10.0;
    const double maxEst = 10.0;

    string inputFile;
    int numTries = 0;



    while (numTries < 4)
    {
        numTries++;
        cout << "Enter initial estimate of root : ";
        cin >> estimate;

        if (!(cin.fail()))
        {
            if ((estimate >= minEst) && (estimate <= maxEst))
            {
                break;
            }
            else
            {
                if (numTries == 4)
                {
                    cout << "ERROR: Exceeded max number of tries entering data" << endl;
                    return 0;
                }
                cout << "" << endl;
                cout << "Value you entered was not in range\n";
                cout << fixed << minEst << " <= initial estimate <= " << maxEst << endl;
            }
        } else {
            cout << "The initial estimate was not a number\n";
            cin.clear();
            std::cin.get();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...