不知道如何总是从较大的数中减去较小的数字
我有整个程序,除了它总是从较大的数中减去较小的数的部分。我一直在试图找到它,但我找不到任何东西来帮助我。这是我需要帮助的唯一部分。不知道如何总是从较大的数中减去较小的数字
这是代码。
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
//function prototype
int getRandomNumber(int lower, int upper);
int main()
{
//declare variables
int smallest = 0;
int largest = 0;
int num1 = 0;
int num2 = 0;
int correctAnswer = 0;
int userAnswer = 0;
//initialize rand function
srand(static_cast<int>(time(0)));
cout << "Smallest Integer: ";
cin >> smallest;
cout << "Largest Integer: ";
cin >> largest;
cout << endl;
for (int x = 1; x < 6; x += 1)
{
//generate two random integers
//from smallest through largest, then
//calculate the sum
num1 = getRandomNumber(smallest, largest);
num2 = getRandomNumber(smallest, largest);
correctAnswer = num1 - num2;
//display addition problem and get user's answer
cout << "what is the difference of " << num1 <<" - " << num2 << " ? ";
cin >> userAnswer;
//determine wether user's answer is correct
if (userAnswer == correctAnswer)
cout << "Correct";
else
cout << " Sorry, the correct answer is " << correctAnswer << ".";
//end if
cout << endl << endl;
} //end for
return 0;
} //end of main function
//*****function definitions*****
int getRandomNumber(int lower, int upper)
{
int randInteger = 0;
//generate random integer from lower through upper
randInteger = lower + rand() % (upper - lower + 1);
return randInteger;
} //end of getRandomNumber function
need help!
如果你只是在两个数之间的差异后,为什么不使用abs(num1 - num2)? 然后你就不必关心订单了。
以及我想要它从较大的一个减去较小的一个的原因是这样答案不会出现为负数。 – jewport101
使用abs()后不会出现负值:P –
似乎很简单。
if (num1 < num2)
correctAnswer = num2 - num1;
else
correctAnswer = num1 - num2;
只是把逻辑放到一个函数中,并做一个简单的布尔检查来决定返回哪个结果。
int SubstractSmallerNumber(int num1, int num2){
if(num1 < num2) return num2 - num1;
else return num1 - num2;
}
这是一个蛮力方法,您可以找到更智能的方法来解决问题。 想想绝对值。如果您采用减法的绝对值,您将获得相同的净效应。
以及我感谢大家的答案,他们帮助非常大。 – jewport101
''中有一个函数可以帮助您排除更小的检查。 –
chris