2016-10-15 8 views
-1

最高値と最低値を決定するために空白/参照関数を作成するのが難しいです。数値は以前に入力され、4つの別々の変数に割り当てられました。数値は0から100の範囲にしかなりません。配列を使用することはできず、関数でなければなりません。私の先生は、彼が6つの条件文とで完了することができたとあなたはgrade1未満grade2であることを実証した後、私は12最高値と最低値の決定

void GetGradesFromUser(double& grade1, double& grade2, double& grade3, double& grade4) 
{ 
    cout << "Enter four test grades: "; 
    cin >> grade1 >> grade2 >> grade3 >> grade4; 
} 

double DetermineMaxAndMin(double& grade1, double& grade2, double& grade3, double& grade4) 
{ 
    double max; 
    double min; 

    if (grade1 >= grade2 && grade1 >= grade3 && grade1 >= grade4) 
    { 
     max = grade1; 
    } 

    else if (grade2 >= grade1 && grade2 >= grade3 && grade2 >= grade4) 
    { 
     max = grade2; 
    } 

    else if (grade3 >= grade1 && grade3 >= grade2 && grade3 >= grade4) 
    { 
     max = grade3; 
    } 

    else max = grade4; 

    if (grade1 <= grade2 && grade1 <= grade3 && grade1 <= grade4) 
    { 
     min = grade1; 
    } 

    else if (grade2 <= grade1 && grade2 <= grade3 && grade2 <= grade4) 
    { 
     min = grade2; 
    } 

    else if (grade3 <= grade1 && grade3 <= grade2 && grade3 <= grade4) 
    { 
     min = grade3; 
    } 

    else min = grade4; 
} 
+1

最適化する前に、コンパイルしてみてください。 (警告に注意してください)そして、あなたは4つの条件が必要です。 –

答えて

-1

に近い持っていると述べ、二度とその条件をテストする必要はありません。 grade1またはgrade2は破棄できます。

maxとすると、この点に最も大きな値を格納する場合は、maxをに更新するたびにmaxと順次比較することができます。

最小値は、表示されている最小値を保存する以外は同じです。

-1

あなたは配列とループを使用することはできません、とこれ以上6以下条件式の中での結果を達成したいと考え、次の点を考慮した場合:

double DetermineMaxAndMin(double& grade1, double& grade2, double& grade3, double& grade4) 
{ 
    double max = grade1; 
    double min = grade1; 

    //find max 
    if (max < grade2) max = grade2; 
    if (max < grade3) max = grade3; 
    if (max < grade4) max = grade4; 

    //find min 
    if (min > grade2) min = grade2; 
    if (min > grade3) min = grade3; 
    if (min > grade4) min = grade4; 
} 

トリックはあなたがすでに見つけたと仮定することですmax/minを計算し、新しい値と比較するときはその値を置き換えます。

+0

ダミット・マン、あなたは彼らに宿題をカット&ペーストしてもらいました。 – user4581301

-2

int a [101]; int min = 0; int max = 0;

min = a [0]; max = a [0]; (min = a [i]){min = a [i];};(int i = 0; i < 101; i ++) if(max < a [i]){max = a [i];}; };

あなたの番号が1の場合は2 3 4;

min = 1; max = 1;最小値は1 1 1 1になります。各反復ごとに; 最大値は1 2 3 4になります。各反復ごとに;

これは、配列daaaの例です。しかし、あなたが十分にスマートなら、私のアプローチを適用することができます。私のコードを調整して配列部分を削除するだけです。

p.s.そのコードは2つの条件を含み、任意の数の数値をソートします。基本的にあなたはそれを確かに行うことができます。

関連する問題