ANfängerprobleme: Schleifen



  • Hallo ich glaube die Aufgabenstellung ist zurzeit irrelevant, jedoch formuliere ich sie mal schnell trotzdem. Ich muss den Wert bestimmen welcher herauskommen würde wenn mal jede Zahl von 1 bis n hochrechnet und zusammen addiert.
    (also 1^1 +2^2 +3^3 +...+n n für eine beliebige natürliche Zahl n).
    Die Verwendung von mathematischen Funktionen (wie z.B. pow aus cmath) ist nicht erlaubt. Jedoch macht mein Programm schon nach der Eingabe der Zahl nicht weiter und ich komme nicht auf die Lösung. Ich hoffe ihr könnt mir helfen :).

    int main(){
    int n, ergebnis = 0,endergebnis = 0;
    cout << "Geben Sie eine Zahl ein";
    cin >> n;
    for (int i=n;i>0;i--)
    {
    ergebnis = i; //Da muss schon der Fehler liegen bzw vorher.
    	for (int j=i;i>0;j--)
            { 
    	ergebnis = ergebnis*i;
             }
    endergebnis = endergebnis+ergebnis;
    }
    cout << "Das Endergebnis lautet: " << endergebnis << "\n";
    
    return 0;
    }
    


  • Zeile 8: i vs. j



  • Aja, wie konnte ich das nur übersehen, vielen Dank Swordfish!



  • Mit einem Debugger kann man solche Fehler schnell finden.



  • Das geht auch mit einem Einzeiler:

    int n = 0, ergebnis = 0;
    	cout << "Geben Sie eine Zahl ein: " ;
    	cin >> n;
    	for (int i = n; i > 0; ergebnis += i*i--);
    	cout << "Das Ergebnis lautet: " << ergebnis << "\n";
    

    Oder habe ich das falsch verstanden?
    Ich glaube nicht, wenn es wirklich "n hoch n" sein sollte, dann sprengst du ruckzuck die Grenzen eines ints.Wieviel ist z.B "10 hoch 10"?



  • Ist die Auswertungsreihenfolge für i*i-- garantiert?



  • Swordfish schrieb:

    Ist die Auswertungsreihenfolge für i*i-- garantiert?

    Hast du evtl recht, wegen der Priorität, dann eben:

    for (int i = n; i > 0; ergebnis += i*i, i--);
    

    Hat aber bei all meinen Tests korrekt funktioniert.


  • Mod

    EOP schrieb:

    Hat aber bei all meinen Tests korrekt funktioniert.

    UB heißt ja nicht: macht nicht das, was erwartet wird; sondern: macht was es will - was zufällig auch mal das Gewünschte sein kann.


Anmelden zum Antworten