IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

problème suite de fibonacci


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut problème suite de fibonacci
    Salut à tous!!
    je débute en c et j'ai réalisé la suite de Fibonacci ,mon programme doit afficher les 30 premiers nombres de la suite mais il n'affiche ni le chiffre 3 ni le 8..voici mon code, svp dites moi ce qui cloche..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
     
    #include<stdio.h>
    #include<stdlib.h>
    #define max 30
    int main()
    {
       int nbren=1,i,som=0;
       printf("les 30 premiers nombres de la suite de Fibonachi sont\n");     
       for(i=1;i<=max;i++)
       {
     
        printf("%d\n",nbren);
        som=som+nbren;
        nbren=nbren+som;
       }
       system("pause");
       return(0);
    }

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Bonsoir,

    Citation Envoyé par joelulrich Voir le message
    Salut à tous!!
    je débute en c et j'ai réalisé la suite de Fibonacci ,mon programme doit afficher les 30 premiers nombres de la suite mais il n'affiche ni le chiffre 3 ni le 8..voici mon code, svp dites moi ce qui cloche..
    Il ne manque pas seulement les chiffres 5 et 8, il manque exactement un terme sur deux. C'est dû au fait que tu fais deux opérations dans le même tour de boucle ( « som=som+nbren; nbren=nbren+som; ») alors qu'il faudrait plutôt alterner l'une et l'autre à chaque tour.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    ok,mais comment puis je y remedier??

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Ah ben ça, j'ai bien envie de répondre que c'est à toi de trouver ! Surtout que ce n'est franchement pas difficile. Quand i est pair, tu utilises la première formule, sinon tu utilise la seconde.

    Il suffit d'un if() pour faire cela.

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 18
    Par défaut
    j'ai utilisé un if et else comme tu me l'as suggéré mais ça ne passe toujours pas..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    #include<stdio.h>
    #include<stdlib.h>
    #define max 30
    int main()
    {
       int nbren=1,i,som=0;
       printf("les 30 premiers nombres de la suite de Fibonachi sont\n");     
       for(i=1;i<=max;i++)
       {
     
           printf("%d\n",nbren);
     
           if( i % 2 == 0)
           {
             som=som+nbren;
           }
           else
           {
             nbren=nbren+som;
           }
     
       }
       system("pause");
       return(0);
    }

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    On doit construire la suite F(n+2) = F(n+1)+F(n)
    En utilisant les variables F1 et F0 (c'est plus facile à écrire que nbren et som), tu fais dans ton code :
    Afficher F1
    F0 = F1+F0
    F1 = F1+F0
    Si f1 et f0 sont les valeurs de F1 et F0 avant exécution, après exécution on a
    F0 = f1+f0
    F1 = 2f1+f0
    ce qui correspond à faire
    F0 = F(n+1)+F(n) = F(n+2)
    F1 = 2F(n+1)+F(n) = F(n+3)
    puisque F(n+3) = F(n+2)+F(n+1)= 2F(n+1)+F(n).

    Tu calcules en fait deux termes d'un coup, mais n'en affiche qu'un seul !
    F0 (ou som) correspond aux termes d'indice n pair et F1 (ou nbren ) aux termes d'indice impair

    Il suffit donc de changer le printf() et de diminuer le nombre d'itérations (30) par 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #define max 15
    ....
    printf("%d\n%d\n",som,nbren);
    ....

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Citation Envoyé par joelulrich Voir le message
    j'ai utilisé un if et else comme tu me l'as suggéré mais ça ne passe toujours pas..
    • Il faut afficher le résultat avec printf() après l'avoir calculé ;
    • Il faut afficher la variable que tu viens de mettre à jour, donc alternativement som et nbren.


    Donc, soit tu enlèves le printf() du haut et tu en mets un bas de chaque cas de ton if(), soit mieux, tu te débarasses carrément du if() et tu permutes tes variables à chaque tour.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [68k] Problème exercice suite de Fibonacci
    Par tim91700 dans le forum Autres architectures
    Réponses: 15
    Dernier message: 31/03/2009, 20h59
  2. Réponses: 4
    Dernier message: 14/05/2006, 11h51
  3. [NASM] Problème suite de Fibonacci
    Par empochez dans le forum Assembleur
    Réponses: 1
    Dernier message: 05/04/2006, 11h17
  4. problème suite à un appuie long de la touche shift
    Par emi dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 02/04/2006, 14h32
  5. Suite de Fibonacci
    Par Évariste Galois dans le forum C++
    Réponses: 13
    Dernier message: 22/07/2005, 21h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo