2016-10-15 2 views
-1

Ich habe Probleme beim Erstellen einer void/reference Funktion, um die höchste und die niedrigste Nummer zu bestimmen. Die Zahlen wurden früher eingegeben und vier separaten Variablen zugewiesen. Die Zahlen reichen nur von 0 bis 100. Ich kann keine Arrays verwenden und es muss eine Funktion sein. Mein Lehrer sagte er in der Lage war, mit 6 conditionals abzuschließen mit und ich habe näher an 12.Ermitteln der höchsten und niedrigsten Nummer

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

Versuchen Sie, es zu kompilieren, bevor Sie optimieren? (Achtung Warnungen beachten) Dann brauchen Sie nur 4 Bedingungen. –

Antwort

-1

Sobald Sie haben gezeigt, dass grade1 weniger als grade2, besteht keine Notwendigkeit, zu immer wieder diesen Zustand zu testen. grade1 oder grade2 kann verworfen werden.

Wenn Sie eine separate Variable haben, rufen Sie sie max, um den größten Wert bis zu diesem Punkt gespeichert zu speichern, können Sie nacheinander jede Note mit max vergleichen und max jedes Mal aktualisieren, wenn max überschritten wird.

Minimum wird gleich sein, außer dass Sie den niedrigsten Wert speichern, der gesehen wurde.

-1

Wenn Sie nicht Arrays und Schleifen verwenden können, und möchte ein Ergebnis in nicht mehr als 6 conditionals zu erreichen, ist folgendes beachten:

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; 
} 

Der Trick, den Sie bereits gefunden haben, anzunehmen, ist die max/min und ersetzt den Wert beim Vergleich mit neuen Werten.

+0

Verdammt noch mal, lass sie einfach ihre Hausaufgaben schneiden-n-einfügen. – user4581301

-2

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

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

für (int i = 0; i < 101; i ++) {wenn (min> a [i]) {min = a [i];}; if (max < a [i]) {max = a [i];}; };

so, wenn Ihre Nummer 1 2 3 4 sind;

min = 1; max = 1; minimale Werte sind 1 1 1 1; für jede Iteration; maximale Werte werden 1 2 3 4; für jede Iteration;

Dies ist ein Beispiel mit Arrays daaa. Aber wenn Sie schlau genug sind, können Sie meinen Ansatz anwenden. Sie müssen nur meinen Code anpassen und Array-Teil löschen.

Ps.s. Dieser Code enthält 2 Bedingungen und sortiert jede Anzahl von Zahlen. Es ist so einfach, dass Sie es auf jeden Fall tun können.

Verwandte Themen