2016-12-22 5 views
3

Ich muss einen Code schreiben, um 5 positive Zahlen vom Benutzer zu erhalten. Hier ist mein Code:Negative Eingabe vom Benutzer überprüfen, mit Array arbeiten

cout << "Write 5 positive numbers:" << endl; 
int input; 
int num[5]; 

for(int i = 0; i <= 4; ++i){ 
    cin >> input; 
    if(input < 0){ 
     cout << "Error" << endl; 
    }else{ 
     num[i] = input; 
    } 
} 
for(int i = 0; i <= 4; ++i){ 
    cout << "Number " << i << " = " << num[i] << endl; 
} 

Das Problem ist, dass Array nur positive Zahlen gespeichert werden soll. Wenn ich negative num gebe, speichert es es auch und druckt dann den Wert für Papierkorb. Zum Beispiel Eingänge sind: 3 -2 1 6 8 Der Ausgang ist:

Number 0 = 3 
Number 1 = -1608404014 
Number 2 = 1 
Number 3 = 6 
Number 4 = 8 

Der Code sollte den Benutzer geben Sie die Eingabe, bis alle 5 in Eimern Array stellt nur mit positiven Zahlen

+1

Ihr Code tut genau das, was Sie ihm gesagt haben. Wenn eine negative Zahl eingegeben wird, wird dieser Index des Arrays übersprungen. – John3136

+2

müssen Sie 'while loop' verwenden – Yousaf

Antwort

4

gefüllt werden, Der Wert für den Abfall wird ausgegeben, weil bei Eingabe einer negativen Zahl dieser Index des Arrays in Ihrem Code übersprungen wird.

für Ihr Programm zu halten Benutzer zur Eingabe zu fragen, bis der Benutzer einen positiven Wert eingibt, benötigen Sie einen while loop in Ihrem if block die Error Meldung anzeigt, wenn negativer Wert eingegeben wird.

Auch Sie müssen innerhalb for loop aus Ihrem Code entfernen, weil das ist, was verursacht, den Wert zu drucken gedruckt.

Versuchen folgenden Code

int main() 
    { 
     cout << "Write 5 positive numbers:" << endl; 
     int input; 
     int num[5]; 

     for(int i = 0; i <= 4; i++) 
     { 
      cin >> input; 
      if(input < 0) 
      { 
       cout << "Error" << endl; 
       while(input < 0) 
       { 
        cin>>input; 
       } 

      } 

      num[i] = input; 
     } 

     for(int i = 0; i <= 4; i++){ 
     cout << "Number " << i << " = " << num[i] << endl; 
     } 

     return 0; 
    } 
1

, weil der der Eingangswert negativ ist, Sie speichern Sie es nicht auf das Element i sondern nur eine Nachricht Popup dann ohne Eingabe Sie dieses Element verlassen und den Schleifenzähler erhöht und als Sie erraten nicht initialisierten Variablen einen Müll Wert hat:

die Lösung am negativen Wert mit einer eingebetteten wile Schleife beispielsweise zu blockieren, bis ein gültiger Wert eingegeben wird:

int input; 
int num[5]; 

for(int i = 0; i <= 4; ++i) 
{ 
    cin >> input; 
    while(input < 0) 
    { 
     cout << "Error" << endl; 
     cout << "num[ " << i << "]: "; 
     cin >> input; 
    } 
     num[i] = input; 
} 

for(i = 0; i <= 4; ++i){ 
cout << "Number " << i << " = " << num[i] << endl; 
} 
Verwandte Themen