#include <iostream>
#include <vector>
void Invalid_input(int& num1, int& num2)
{
while (!cin)
{
cout << "You entered an incorrect value!" << '\n';
cin.clear();
cin.ignore(100, '\n');
cout << "Please input again : ";
cin >> num1 >> num2;
}
}
int main() {
while (1) {
int num_of_tower = 0, num_of_disk = 0;
cout << "Please select the number of towers and disks" << '\n'
<< "tower and disk : ";
cin >> num_of_tower >> num_of_disk;
if (!cin) Invalid_input(num_of_tower, num_of_disk);
else if (num_of_tower < 2)
Invalid_input(num_of_tower, num_of_disk);
}
}
这只是整个代码的一部分。我无法在 Invalid_input
语句中调用函数 else if
(例如,在输入 1 和 3 之后)。
除此函数调用外,执行所有操作。我该如何解决?
答案 0 :(得分:0)
您的 Invalid_input
函数正在被调用……但它什么也没做!这是因为,对于 1
的 num_of_tower
输入和 num_of_disk
的有效输入,cin
流上不会出现错误,因此 {{1 }} 函数中的循环将不会运行(因为 while
测试将为 false)。
您应该做的是将 while (!cin)
循环更改为 while() {...}
循环,该循环将始终至少运行一次,即使 do { ... } while();
未处于错误状态:>
cin
您可能还想在该函数中添加进一步检查,以确保给出的第一个输入至少为 2(如在 void Invalid_input(int& num1, int& num2)
{
do {
cout << "You entered an incorrect value!" << '\n';
cin.clear();
cin.ignore(100, '\n');
cout << "Please input again : ";
cin >> num1 >> num2;
} while (!cin);
}
函数中):
main