Abend!
Ich bin gerade dabei ein Programm zur Ausgabe der Fibnoacci-Zahlen für die Uni zu schreiben und komme nicht weiter. Es soll möglich sein, die Anzahld er auszugebenden Elemente anzuzeigen sowie eine Wiederholen funktion geben.
Zu ersteres habe ich mir schon einiges angeguckt da ich es Anfangs nicht ganz verstanden hatte, nun stehe ich aber vor dem Problem, dass mein Programm sich nicht mit CodeBlocks ausführen lässt.
Code:
#include <stdio.h>
#include <stdlib.h>
long fibo(long n) {
if(n)
return (n <= 2) ? n : fibo(n-2) + fibo(n-1);
return 0;
}
int main(void) {
long f;
long i=0;
printf("Wie viele Fibonacci-Zahlen wollen Sie ausgeben:");
scanf("%ld",&f);
while(i++ < f)
printf("F(%ld) = %ld\n", i, fibo(i));
return EXIT_SUCCESS;
}
Desweiter habe ich noch Probleme mit der While-Schleife.
Ich hatte mir schon zuvor eine Vorlage aus dem Internet gezogen um einfach an diesem Beispiel auch zu lernen und dort die While Schleife anzuwenden. Dazu habe ich mir auch Youtube zuhilfe genommen ([
Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]).
Allerdings ist da irgendwie ein Fehler unterlaufen hier mal der Code der ansich funktionieren müsste nur nach meinem hinzufügen der While-Schleife funktioniert es nicht mehr.
Code:
#include <stdio.h>
int main(void)
{
char auswahl;
int ende = 0;
do
{
/* Zaehlvariable und Endvariable */
unsigned int i,ende;
/* Endvariable einlesen */
printf("Bitte Anzahl der zu berechnenden Zahlen eingeben: ");
scanf("%u",&ende);
fflush(stdin); // Eingabepuffer leeren, da sonst Gefahr besteht, dass nächste Eingabe übersprungen wird */
/* Dynamisches array */
unsigned long folge[ende];
/* Werte werden laut Definition vorgegeben */
folge[0]=0;
folge[1]=1;
/* Bei 0 oder 1, entsprechende Meldung ausgeben */
if (ende < 2)
{
printf("Die vorgegebenen Werte sind %d und %d\n",0,1);
}
else
{
printf("%d, %d",0,1);
}
/* Array mit Fibonacci folge fuellen und ausgeben */
for ( i=2; i <= ende ;i++)
folge[i]=folge[i-1]+folge[i-2];
if (i==ende)
{
printf(", %lu.\n",folge[i]);
}
else
{
printf(", %lu",folge[i]);
}
printf ("\nWollen Sie eine weitere Zahl eingeben? (J/N)");
scanf ("%c", &auswahl);
auswahl=toupper(auswahl); // Wert von "auswahl" auf groß damit der Benutzer j oder J eingeben kann
}
while (auswahl=='J'); // Bei "J" beginn von vorne
return 0;
}
Ich hoffe ihr könnt mir helfen und schonmal vielen Dank an euch