myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Ungelesen 08.12.12, 18:07   #1
Metal_Rex
Anfänger
 
Registriert seit: Dec 2011
Beiträge: 17
Bedankt: 0
Metal_Rex ist noch neu hier! | 0 Respekt Punkte
Standard Fibonacci-Zahlen

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
Metal_Rex ist offline   Mit Zitat antworten
Ungelesen 08.12.12, 19:32   #2
Quabla
Mitglied
 
Registriert seit: Oct 2010
Beiträge: 299
Bedankt: 151
Quabla ist noch neu hier! | 0 Respekt Punkte
Standard

füt "toupper()" musst du noch <ctype.h> inkludieren

und du solltest deinen code noch üpberarbeiten. wenn ich 3 werte ausgeben will, ist die letzte zahl murks
Quabla ist offline   Mit Zitat antworten
Ungelesen 08.12.12, 21:27   #3
Draien
Anfänger
 
Registriert seit: Aug 2009
Beiträge: 30
Bedankt: 4
Draien ist noch neu hier! | 0 Respekt Punkte
Standard

Hatte ähnliche Probleme mit der "Wiederholen funktion" auch schon. Lösung: aus Char mach int und dann kannst du das toupper weglassen, oder du flusht vorher den input/output stream (das waren zumindest meine größten Fehler immer^^):

Code:
do
{
        printf(", %lu",folge[i]); fflush (stdout);

        printf ("\nFür eine weitere Zahl 1 eingeben:");
        fflush(stdin);
        scanf ("%i", &auswahl);
}while(auswahl == 1);
Wäre auch hilfreich, was genau nichtmehr funktioniert. Sehe hier auch einiges, was sich verbessern liese.

PM mich mal wenn es nicht klappen sollte

LG
Draien ist offline   Mit Zitat antworten
Ungelesen 09.12.12, 22:35   #4
flotti
Mitglied
 
Registriert seit: Mar 2009
Beiträge: 315
Bedankt: 21
flotti ist noch neu hier! | 0 Respekt Punkte
Standard

versuchs mal so

Code:
#include <stdio.h>
#include <stdlib.h>

int main ()
{
	unsigned int ende,i;
	char auswahl;
	
	do {

		/* Endvariable einlesen */
		printf("Bitte Anzahl der zu berechnenden Zahlen eingeben: ");
		scanf("%u",&ende);
		fflush(stdin); 

		/* Dynamisches array */
		unsigned long *folge = (unsigned long *)malloc(ende * sizeof(long));

		/* 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];
			printf(", %d",folge[i]);
		}
	
		printf ("\nWollen Sie eine weitere Zahl eingeben? (J/N)");
		scanf ("%c", &auswahl);
	}
	while(auswahl == 'j' || auswahl == 'J');
}
flotti ist offline   Mit Zitat antworten
Ungelesen 09.12.12, 22:37   #5
flotti
Mitglied
 
Registriert seit: Mar 2009
Beiträge: 315
Bedankt: 21
flotti ist noch neu hier! | 0 Respekt Punkte
Standard

versuchs ma so
PHP-Code:
#include <stdio.h>
#include <stdlib.h>

int main ()
{
    
unsigned int ende,i;
    
char auswahl;
    
    do {

        
/* Endvariable einlesen */
        
printf("Bitte Anzahl der zu berechnenden Zahlen eingeben: ");
        
scanf("%u",&ende);
        
fflush(stdin); 

        
/* Dynamisches array */
        
unsigned long *folge = (unsigned long *)malloc(ende sizeof(long));

        
/* 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=2ende ;i++) {
            
folge[i]=folge[i-1]+folge[i-2];
            
printf(", %d",folge[i]);
        }
    
        
printf ("\nWollen Sie eine weitere Zahl eingeben? (J/N)");
        
scanf ("%c", &auswahl);
    }
    while(
auswahl == 'j' || auswahl == 'J');
    return 
EXIT_SUCCESS;

flotti ist offline   Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr.


Sitemap

().