2017-10-27 5 views
0

Ich muss ein Programm schreiben, das eine Liste von Zahlen in Schleife einliest, bis der Benutzer die Nummer 0 gibt. Nummer 0 ist nicht in den Berechnungen enthalten, ist nur ein Signal für die Enddaten. Nächstes Programm schreibe min und max Element aus einer Zahlenfolge und wie oft es eingegeben wurde. Zum Beispiel für (2,3,1,5,4,2,3,1,5,1)Min und Max in der Liste der Nummern suchen

Min 1 3 mal

Max 5 2 mal

Ich habe Problem mit Nummer, denn wenn ich max habe und niedrigere Zahlen eingeben, wird mein lmax immer höher. Zweites Problem ist, dass das Programm nicht auf '0' antwortet. Was mache ich falsch?

int number; 
int min = 0; 
int max = 0; 
int lmin = 1; 
int lmax = 1; 
do { 
    cout << "Number: "; 
    cin >> number; 

    if (min == 0 && max == 0) { 
     min = number; 
     max = number; 
    } 

    else if (number > max && number !=0) { 
     max = number; 
     lmax = 1; 
    } 
    else if (number < min && number != 0) { 
     min = number; 
     lmin = 1; 
    } 
    else if (number = max) { 
     lmax++; 
    } 
    else if (number = min) { 
     lmin++; 
    } 


    } while (number != 0); 

    cout << "Min " << min << " " << lmin << " times" <<endl; 
    cout << "Max " << max << " " << lmax << " times" << endl; 

}

Antwort

2

Sie verwenden = anstatt == für Teile Ihrer Lösung. Versuchen

else if (number = max) { 

um so etwas wie

else if (number == max) { 
+2

verändern sich auch Dieser Fehler bedeutet, dass Compiler-Warnungen entweder ausgeschaltet oder sie werden ignoriert. –