Я пишу математическую викторину, которая выполняет сложение, вычитание, умножение и деление. В моей функции вычитания я не могу понять, как игнорировать введенный пользователем знак «-» в части cin >> unserInput, так как это не всегда требуется (например, если оно положительное).
У меня есть оператор if, который, если вычисляемый машиной результат является отрицательным, должен иметь возможность заклинать символ "-", но программа падает, если пользователь его пропускает. Как я могу проверить наличие символа "-", игнорировать его, если он есть, и продолжать извлекать значения типа int, а если его нет, просто получить значения?
void subFractions(int num1 , int num2 , int denom1 ,int denom2 ,int answerNum
, int answerDenom , int resultNum , int resultDenom , int number , int
numCorrect = 0)
{
// use random number to work
srand(time(NULL));
// begin counter
number = 1;
// count number of math problems to be pushed to user
while ( number < 11)
{
//Assigning the numerators and denominators to random numbers
//between 1 to 10
num1 = rand() % 10 + 1; // numerator 1
num2 = rand() % 10 + 1; // numerator 2
denom1 = rand() % 10 + 1; // denom 1
denom2 = rand() % 10 + 1; // denom 2
char sign; // operator sign (/)
char neg; // pull negative sign in if required
// push header to user
cout << "Question " << number << ": What is the result of the
following?" << endl;
cout << right << setw(3) << num1 << right << setw(8) << num2 << endl;
cout << right << setw(3) << " ---" << right << setw(3) << "-" <<
right << setw(5) << " ---" << endl;
cout << right << setw(3) << denom1 << right << setw(8) << denom2 <<
endl;
//Calculate resultant
resultNum = ( ( num1 * denom2 ) - (denom1 * num2 ) );
resultDenom = ( denom1 * denom2 );
double resultant = resultNum / resultDenom;
//getting the answer from the user
cout << "Enter your answer in the form numerator / denominator: ";
// check resultant for negative number
if (resultant < 0)
{
cout << "neg answer" << endl;
cin >> neg >> answerNum >> sign >> answerDenom;
answerNum = (-1) * answerNum;
cout << endl;
} // end negative number check
else
{
cout << "pos answer" << endl;
cin >> answerNum >> sign >> answerDenom;
cout << endl;
} // end positive number check
double userResultant = answerNum / answerDenom;
//if the answer is right
if (resultant == userResultant)
{
cout << "Correct!" << endl;
numCorrect++;
} // end correct statement
else
{
cout << "That is not correct. " << endl;
//Reshowing the fraction with answer of the numerator
cout << right << setw(3) << num1 << right << setw(8) << num2 <<
right << setw(8) << resultNum << endl;
//Showing the fraction and the symbols
cout << right << setw(3) << " ---" << right << setw(3) << "-" <<
right << setw(5) << " ---" <<
right << setw(3) << "=" << right << setw(5) << "---" << endl;
//Showing the denominator with answer of the denominator
cout << right << setw(3) << denom1 << right << setw(8) << denom2
<< setw(8) << resultDenom << endl;
cout << "" << endl;
} // end incorrect statement
Если пользовательне вводит "-", оно должно выкинуть неверное утверждение. Как это, это просто сбой. Предположительно, потому что он загружает значения в неправильную переменную и оставляет последнее пустым.