Zähler nach Eingabe-Ende um 1 höher als er sein sollte.



  • Hallo!

    Ich habe ein bescheidenes Problem mit meinem Code und komme nicht weiter.
    Mein Code soll die Summe der Zahlen in einem array durch die Anzahl der im array vorkommenden Elemente (Zahlen) dividieren.

    Mein Problem sieht so aus:
    Ich beende meine Eingabe mit 0, allerdings läuft meine Schleife noch einmal und gibt mir für mein arr[10] den Wert 0, was ja kein Problem wäre, allerdings springt auch mein Zähler um 1 höher, was natürlich mein Ergebnis versaut.

    Hier also der Code:

    #include <iostream>
    using namespace std;
    int main(){
    int arr[50];
    int zehl=0; 
    double summe=0, x=1;
    
    for(int i=0; x!=0; i++){
    	cin >> x;
    
    	arr[i]=x;
    	cout << "i: " << i << '\t' << "x: " << x << endl;
    	summe+=arr[i];
    	zehl++;
    
    }
    
    cout << "Summe: " << summe << '\t' << "Zähler: " << zehl << endl; //Für mich, um zu sehen was abläuft
    
    system( "PAUSE" );
    return 0;
    }
    

    EDIT: Ich denke der Fehler ist, dass ich das "cin >> x" in der Schleife habe, allerdings fällt mir keine andere Lösung ein. habe es mit einer while Anweisung versucht, allerdings nur eine Hexadezimalzahl als ausgabe erhalten.

    EDIT2: Den Zähler mit -1 zu initialisieren erscheint mir suboptimal, aber es erfüllt seinen Zweck.



  • Es gibt auch noch den "Trick":

    for(int i=0; cin >> x && x!=0; i++)
    


  • Hey vielen Dank!


Log in to reply