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 = 1035Ich 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 = 990Ich 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?