-3

私はこの任務を遂行するのに苦労しました。私は理解するのに苦労しているだけで、何をすべきか完全にはわかりません。動画を調べたり見たりしましたが、適切で具体的な情報を見つけることができませんでした。たくさんの質問があるので、誰かが答えを教えてくれるだけでなく、私に説明してくれることを願っています:)。質問は次のとおりです。

1) この演習では、入力として 2 つの整数を受け入れ、どちらが大きい値を保持しているかを評価するプログラム コードが与えられています。この評価は、コード全体の複数の場所で発生します。コードを何度も複製する代わりに、プログラムがこの同じ評価を実行するために使用できる関数を作成します。まず、コード ファイルの先頭に適切な関数宣言を記述します。関数が何らかの出力を返すかどうかを決定する必要があります。

2) 宣言を記述したら、関数の定義に進みます。これには、2 つの整数のどちらが最大かを評価する適切なコードが含まれます。関数が値を返すと前に述べた場合は、ここで何を返すかを定義してください。

3) パート (1) と (2) の結果を使用して、整数比較の複数のインスタンスを、作成した関数を呼び出す呼び出しに置き換えることによって提供されるメイン関数の重複コードの量を減らします。関数には引数として 2 つの整数を渡す必要があることに注意してください。関数から何らかの値を返す場合は、それを使用する必要があります (変数に格納する、画面に出力するなど)。アドバイスとして、評価の 1 つだけを置き換えた後に関数が正しく動作することをテストします。一度にすべてを置き換えないでください (関数が最初の置換で正しく動作する場合は、他の置換でも動作するはずです)。

4) 作成した関数はパラメータの値を比較するだけで、パラメータに書き込む (つまり、格納されている値を変更する) のではないため、関数の宣言と定義で、これらのパラメータを定数のように扱うように指定する必要があります。関数に必要な変更を加え、もう一度テストして、関数がまだ機能することを確認します。変数の 1 つの値を変更する操作を関数に含めることによって、関数がパラメーターのデータを変更できないことを確認します (例: number2 += 10;)。

-- コードは次のとおりです (長文で申し訳ありません)。

#include <iostream>

int main(void)
{
using std::cout;
using std::cin;
using std::endl;

int nNum1 = 10, nNum2 = 11;

cout << "This program will compare two numbers and report which one is larger.\n\n"
    << "Proceeding with evaluation...\n" << endl;

cout << "\nUsing numbers: " << nNum1 << " and " << nNum2 << ", the larger one is: ";
if (nNum1 > nNum2)
    cout << nNum1 << endl;
else if (nNum1 < nNum2)
    cout << nNum2 << endl;
else
    cout << "Neither of them! It's a draw." << endl;

int numberA = 234;
int numberB = 234;
cout << "\nUsing numbers: " << numberA << " and " << numberB << ", the larger one is: ";
if (numberA > numberB)
    cout << numberA << endl;
else if (numberA < numberB)
    cout << numberB << endl;
else
    cout << "Neither of them! It's a draw." << endl;

int one = 'a';
int two = 'A';
cout << "\nUsing numbers: " << one << " and " << two << ", the larger one is: ";
if (one > two)
    cout << one << endl;
else if (one < two)
    cout << two << endl;
else
    cout << "Neither of them! It's a draw." << endl;

cout << "\nUsing numbers: " << 13 << " and " << 84 << ", the larger one is: ";
if (13 > 84)
    cout << 13 << endl;
else if (13 < 84)
    cout << 84 << endl;
else
    cout << "Neither of them! It's a draw." << endl;

int input1 = 0;
int input2 = 0;
cout << "\nPlease enter a number: ";
cin >> input1;
cout << "\nPlease enter a second number: ";
cin >> input2;

cout << "\nUsing numbers: " << input1 << " and " << input2 << ", the larger one is: ";
if (input1 > input2)
    cout << input1 << endl;
else if (input1 < input2)
    cout << input2 << endl;
else
    cout << "Neither of them! It's a draw." << endl;

cout << "\n\tThank you for running me :3\n" << endl;
return 0;

}

4

1 に答える 1

0

基本的に、コードをリファクタリングして、関数内の重複コード部分を置き換える必要がありますmain

よく見ると、次のようなコードが繰り返されていることがわかります。

cout << "\nUsing numbers: " << nNum1 << " and " << nNum2 << ", the larger one is: ";
if (nNum1 > nNum2)
    cout << nNum1 << endl;
else if (nNum1 < nNum2)
    cout << nNum2 << endl;
else
    cout << "Neither of them! It's a draw." << endl;

それを関数に入れます:

void CompareNumbers(int nNum1, int nNum2)
{
    cout << "\nUsing numbers: " << nNum1 << " and " << nNum2 << ", the larger one is: ";
    if (nNum1 > nNum2)
        cout << nNum1 << endl;
    else if (nNum1 < nNum2)
        cout << nNum2 << endl;
    else
        cout << "Neither of them! It's a draw." << endl;
}

上記のコードブロックを複製する代わりに、メイン関数でこれを呼び出します。

于 2015-09-13T10:55:10.200 に答える