kann schleife nicht abbrechen



  • Hallo an alle;
    Ich habe ein Problem mit meiner Schleife, ich muss die eine Rechenoperation ausführen die alle Zahlen von 1 - n addiert und auch deren Quadratzahlen:

    Bsp:

    1. Schleifendurchlauf = 1 (1+0)
    2. Schleifendurchlauf = 3 (1+2)
    3. Schleifendurchlauf = 6 (3+3)
    4. Schleifendurchlauf = 10 (6+4)
    ...
    ...
    ...
    das gleiche auch mit deren Quadraten:
    1. Schleifendurchlauf = 1 (1²)
    2. Schleifendurchlauf = 5 (1²+2²)
    3. Schleifendurchlauf = 14 (1²+2²+3²)
    4. Schleifendurchlauf = 30 (1²+2²+3²+4²)

    Die Schleife soll so lange laufen bis die letzte Zahl kleiner als 1000 ist.

    #include <stdio.h>
    
    int main (){
        int i = 1;
        int rechnung = 0;
        int zaehler = 1;
        int quadrat = 0;
    
       while(rechnung<=1000){
    
            if(quadrat>=1000){
            rechnung = i+ rechnung;
    
            printf("Die Summe aller Zahlen von 1 bis %i = %i\n",zaehler, rechnung);
            zaehler++;
            i++;
        }else{
            rechnung = i+ rechnung;
            quadrat = (i*i)+quadrat;
            printf("Die Summe aller Zahlen von 1 bis %i = %i\n",zaehler, rechnung);
            printf("Die Summe aller Quadrate 1^2 bis 1^%i = %i\n", i, quadrat);
            printf("\n");
            zaehler++;
            i++;
        }}
    
    return 0;
    }
    

    Das Problem hier bei ist das mein Programm immer erst nach 1000 abbreicht
    so bekomme ich immer als Ausgabe:

    Die Summe aller Quadrate 1^2 bis 1^14 = 1015
    Die Summe aller Zahlen von 1 bis 45 = 1035

    Ich möchte aber das die Schleife vorher abbicht also bei:

    Die Summe aller Quadrate 1^2 bis 1^13 = 819
    Die Summe aller Zahlen von 1 bis 44 = 990

    Ich hoffe ich konnte mein Problem gut schlildern.

    Vielen Dank



  • DJ Motherboard schrieb:

    Ich möchte aber das die Schleife vorher abbicht ...

    Da müßte der Computer ja in die Zukunft schauen können.

    Du kannst dir aber den Wert vom vorhergehenden Durchgang merken und den dann ausgeben.

    Und benutze doch bitte die Code-Tags. Code markieren und auf den C-Button unter dem 😡 klicken.
    Oder den Cursor an den Anfang vom Code setzen, einmal auf den C-Button klicken (der bekommt dann noch einen *), den Cursor an das Ende vom Code setzen und noch einmal auf den C-Button klicken.

    Und du als registriertes Mitglied kannst deinen Beitrag sogar nachträglich editieren und das noch verbessern.



  • 👍



  • do-while-Schleife oder Endlosschleife while(true) mit break einsetzen. Brauchst du noch Code-Schnippsels?



  • Kann ich gebrauchen wäre gut. Danke.



  • if ((x+y) >= 1000)
    	break;
    else x += y;
    


  • Bei einer Formatierung wie

    }else{
    

    würde ich auch nicht mehr durchblicken.

    EDIT:
    Was willst du? Beim code obfuscation contest ganz vorne landen?


Anmelden zum Antworten