0

私は、常に大きい数値から小さい数値を減算する部分を除いて、プログラム全体を持っています。私はそれを見つけようとしましたが、それを助けるものを見つけることができませんでした。それは私が助けを必要とする唯一の部分です。

これがコードです。

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

3 に答える 3

4

2つの数値の差を求めているだけの場合は、abs(num1-num2)を使用してみませんか?そうすれば、順序を気にする必要はありません。

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

于 2012-10-29T07:23:05.597 に答える
2

それは非常に簡単に思えます。

if (num1 < num2)
   correctAnswer = num2 - num1;
else
   correctAnswer = num1 - num2;
于 2012-10-29T07:25:49.657 に答える
1

ロジックを関数に入れ、単純な bool チェックを実行して、返す結果を決定するだけです。

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

これは強引な方法であり、問​​題を解決するためのよりスマートな方法を見つけることができます。絶対値について考えてみましょう。減算の絶対値を取ると、同じ正味の効果が得られます。

于 2012-10-29T07:26:19.573 に答える