gpt4 book ai didi

C++ - 当检查输入是否为整数时循环不断重复 -

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:57 24 4
gpt4 key购买 nike

我正在尝试进行模运算。我要求用户输入两个数字,因为模数只适用于整数,所以我有一个 while 循环来检查输入是否为整数。然后 while 循环要求用户重新输入这两个数字。但是 while 循环不断重复并且不允许用户有机会重新输入数字。这样做的正确做法是什么?


#include <iostream>
using namespace std;

int Modulus (int, int,struct Calculator);

struct Calculator
{
int per_numb1, per_numb2;
int per_Result; };

int main ()
{
Calculator Operation1;

cout << "\nPlease enter the first number to calculate as a modulus: ";
cin >> Operation1.per_numb1;

cout << "\nPlease enter the second number to calculate modulus: ";
cin >> Operation1.per_numb2;

while ( !( cin >> Operation1.per_numb1) || !( cin >> Operation1.per_numb2))
{

cout << "\nERROR\nInvalid operation \nThe first number or second number must be an integer";
cout << "\n\nPlease re-enter the first number to begin Modulus: ";
cin >> Operation1.per_numb1;

cout << "\nPlease re-enter the second number to begin Modulus: ";
cin >> Operation1.per_numb2;
}





Operation1.per_Result = Modulus(Operation1.per_numb1, Operation1.per_numb2, Operation1);

cout << "\nThe result is: " << Operation1.per_Result << endl;

}

int Modulus (int n1, int n2, struct Calculator)
{
int Answer;

Answer = n1 % n2;

return Answer;
}

最佳答案

重构为这样的东西:

 #include <iostream>
#include <string>
#include <limits>

using namespace std;

class Calculator
{
public:
static int Modulus (int n1, int n2);
};

int Calculator::Modulus (int n1, int n2)
{
return n1 % n2;
}

int getInt(string msg)
{
int aa;

cout << msg;
cin >> aa;
while (cin.fail())
{
cin.clear();
cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
cerr << "Input was not an integer!" << endl;
cout << msg;
cin >> aa;
}
return aa;
}

int main ()
{
int num1 = getInt("Enter first value: ");
int num2 = getInt("Enter second value: ");
int value = Calculator::Modulus(num1,num2);
cout << "Answer:" << value << endl ;
}

关于C++ - 当检查输入是否为整数时循环不断重复 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15594654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com