В следующем коде я пытался создать функцию в public пространстве класса "SOMECLASS", которая принимала бы пользовательский ввод, состоящий из значений с плавающей запятой (объявленных в private пространство того же класса) и проверить ввод пользователя. Если введенное значение не является значением с плавающей запятой, на нем отобразится сообщение об ошибке, и пользователю будет предоставлена возможность повторно ввести это значение. Тем не менее, после ввода некоторого мусора цикл запускается с самого начала, заставляя пользователя снова вводить все эти значения.
PS: я знаю, что можно создать несколько циклов, чтобы проверить каждое значение отдельно и разорвать циклесли утверждение верно, но я хочу знать, есть ли более простые способы сделать это.
Заранее благодарен за помощь.
void SOMECLASS::USER_INPUT() {
bool loopBool = true; // it is used to manage the do/while loop below;
do { // the loop is going to run for as long as the boolean is true;
cout << " Enter the frequency of the cumputer's CPU in GHz: ";
cin >> float1;
if (!float1) { // checks if the value entered is valid;
cin.clear();
cin.ignore (numeric_limits<streamsize>::max(), '\n');
cout << "INVALID INPUT!!!" << endl << endl;
}
else {
cout << " Enter the Hard Drive Capacity in TB: ";
cin >> float2;
if (!float2) { // checks if the value entered is valid;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "INVALID INPUT" << endl << endl;
}
else {
cout << " Enter the capacity of your RAM in GB: ";
cin >> float3;
if (!float3) { // checks if the value entered is valid;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "INVALID INPUT" << endl << endl;
}
loopBool = false;
}
}
} while (loopBool);
};
ВЫХОД:
Computer #1/2
|--> Enter the frequency of the cumputer's CPU in GHz: 2.3
|--> Enter the Hard Drive Capacity in TB: 4
|--> Enter the capacity of your RAM in GB: asd
INVALID INPUT
`--> The final cost is: ...
желаемый выход:
Computer #1/2
|--> Enter the frequency of the cumputer's CPU in GHz: 2.3
|--> Enter the Hard Drive Capacity in TB: 4
|--> Enter the capacity of your RAM in GB: asd
INVALID INPUT
|--> Enter the capacity of your RAM in GB: 16
`--> The final cost is: ...