Schleife neu beginnen!

om1krnoy

Grünschnabel
Hallo erstmal :)
Hab dieses Jahr mit C programmierung angefangen und jetzt komm ich bei einem Programm mit hängen und würgen nicht weiter.
Wir sollen ein Programm schreiben das die Fibonacci Zahlen bis zu einem vorher eingegebenen Wert ausgibt. So weit so gut!

Nur soll das Programm bei dem 20. Wert anhalten und erst wenn man dann Enter drückt weiter machen die Werte auszugeben.
Das ganze muss irgendwie mit while Schleifen zu lösen sein, da ich noch keine Break anweißung gemacht habe.

Wäre schön wenn mir wer helfen könnte,

Gruß

Benny
 
So:
C++:
// Deine Schleife beginnt
{
  // Tu was
  if (20)
  {
    cin.get();
  }
}
Du brauchst überhaupt keine Schleife benutzen, da die folgenden Anweisungen erst starten, wenn cin.get() ein Ergebnis (=Enter) liefert.
 
Du brauchst ja auch kein break.
Du hast zwei Schleifen. Einen Zähler der in der inneren Schleife hochgezählt wird. In der inneren Schleife werden auch die Zahlen berechnet und ausgegeben. Bedinung der inneren Schleife, sie läuft bis der Zähler auf 20 ist.
Nach der inneren Schleife wird der Zähler wieder auf 0 gesetzt und das mit dem Enter realisiert.

Dann musst du als Bedingung in der äußeren und inneren Schleife noch so setzen, dass sie nur so lange laufen, bis sie die eingegebene Zahl erreicht habe.

Wenn du schon einen Zähler hast, den du für was anderes nutzt, kannst du schauen ob
Code:
deinZähler % 20 == 0
ist.

Gruß

Sascha

EDIT:

Die von ComFreek ist etwas besser, da nur eine Schleife.
 
@zerix

Ich bin davon ausgegangen, dass er die Überprüfung (=20) selbst bereits geschrieben hat. ...Achso, ich dachte er wollte nur das haben.
Ich heiße ComFreek (mit 2x e)
 
Zuletzt bearbeitet von einem Moderator:
Danke schon mal :)

wollte nur noch mal kurz nachfragen wie ich die schleifen trennen kann... funktioniert das mit den "{" Klammern?

Gruß
 
Muss leider nochmal nachfragen weil irgendwie funktionierts bei mir net. Irgendwie arbeitet erst nur die inner schleife durch und überprüft nicht
ob n > x. Bin leider noch blutiger Anfänger :(
Hab mal mein bisheriges Programm angehängt

Code:
#include <stdio.h>

int main (void)
{
	int x = 1, y = 1, z = 0, n, step = 1;

	printf("Fibonacci-Zahlen\n"
		   "================\n"
		   "\n"
		   "Bis Wohin?");
   scanf("%d", &n);

   while (n > x) {
	   while (step <= 20) {
	    printf("%d %d\n",step, x);
		x = y + z;
	    z = y;
	    y = x;
		step = step ++;
	   }
	printf("weiter mit return...");
   }

   return 0;
}
 
Sprechende Bezeichner sind recht hilfreich. :-)
Ich hab jetzt nicht ganz genau geschaut, aber ich schätze n > x ist bei dir die Abfrage, ob es noch kleine als die angegebene Zahl ist.
Diese Abfrage brauchst du auch in der inneren Schleife. Also
Code:
while(n>X && step<=20)

Du kannst es auch so machen, wie ComFreek gesagt hat.
Du lässt einfach die innere Schleife weg. Aber nicht den Inhalt der Schleife.
Dann packst du die Abfrage der inneren Schleife in eine If-Anweisung.

Also so

Code:
while (n > x) {
	   
	    printf("%d %d\n",step, x);
		x = y + z;
	    z = y;
	    y = x;
		step = step ++;
	  if(step%20 == 0)
	      printf("weiter mit return...");
   }

Hab ich jetzt nicht getestet, müsste aber so passen.

Gruß

Sascha
 
Zurück