【问题标题】:cant figure out how to always subtract smaller num from larger无法弄清楚如何总是从较大的数字中减去较小的数字
【发布时间】:2012-10-29 07:17:15
【问题描述】:

我有整个程序,除了它总是从较大的数字中减去较小的数字的部分。我一直试图找到它,但我找不到任何可以帮助我的东西。这是我唯一需要帮助的部分。

这里是代码。

#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!

【问题讨论】:

  • &lt;cmath&gt; 中有一个函数可以帮助您消除对较小的检查。
  • 它是否总是从较大的值中减去较小的值而您不希望这样做?或者您是否希望它总是从较大的值中减去较小的值,但事实并非如此?但是你在输出中表达问题的方式我认为程序应该完全按照它的方式做。我错过了什么?我会回答 5 “17 - 12 有什么区别?”我会回答 -3 “11 - 14 有什么区别?”所以我需要一些关于你想要什么输出的细节,与你得到的输出相反。为一些示例输入提供了两者的示例。

标签: c++ cmath


【解决方案1】:

如果您只关注两个数字之间的差异,为什么不使用 abs(num1 - num2)? 这样你就不必关心订单了。

http://www.cplusplus.com/reference/clibrary/cmath/abs/

【讨论】:

  • 嗯,我希望它从较大的数字中减去较小的数字的原因是这样答案就不会成为负数。
  • 使用 abs() 后不会出现负数:P
【解决方案2】:

看起来很简单。

if (num1 < num2)
   correctAnswer = num2 - num1;
else
   correctAnswer = num1 - num2;

【讨论】:

    【解决方案3】:

    只需将逻辑放入一个函数中,然后做一个简单的布尔检查来决定返回哪个结果。

    int SubstractSmallerNumber(int num1, int num2){
        if(num1 < num2) return num2 - num1;
        else return num1 - num2;
    }
    

    这是一种蛮力方法,您可以找到更聪明的方法来解决问题。 想想绝对价值。如果你取减法的绝对值,你会得到同样的净效果。

    【讨论】:

    • 嗯,谢谢大家的回答,他们帮助很大。
    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多