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 :

Fonction Fibonacci [ exercice RAPIDE debutant ]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    fdf
    Inscrit en
    Novembre 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : fdf

    Informations forums :
    Inscription : Novembre 2014
    Messages : 20
    Par défaut Fonction Fibonacci [ exercice RAPIDE debutant ]
    Bonsoir

    Je comprend pas à un moment du code pour cette exercice simple...
    J'ai posé le problème sur papier avec des valeurs en exemple pour ce programme mais je bloque dès que j'arrive à la ligne 16-17


    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
     
     
     
       int FIBO(n) {
            int Fn,Fn-1,Fn-2;
            if (n==0) {
                  return 0;
            }else{
                if(n==1) {
                     return 1;
            }else{
              Fn-2=0;
              Fn-1=1;
             for ( int k=2; k<=n;++k) {
               Fn=Fn-1+ Fn-2;
               Fn-2=Fn-1;
               Fn-1=Fn;
             }
             return Fn;
            }
         }
    }

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 639
    Par défaut
    Tu n'as qu'une seule variable locale (en dehors du paramètre n dont tu n'as pas précisé le type) : Fn.

    Quand tu écris Fn-1, ça veut dire Fn - 1, tu enlèves 1 à Fn.

    Donc forcément ton code ne peut pas marcher du tout...

  3. #3
    Membre averti
    Homme Profil pro
    fdf
    Inscrit en
    Novembre 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : fdf

    Informations forums :
    Inscription : Novembre 2014
    Messages : 20
    Par défaut
    j'ai compris que F n-1 c'est Fn -1.
    Mon probleme se situe aux lignes 16 et 17 , pourquoi il ya un echeange de valeurs

  4. #4
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par défaut
    C'est pour déplacer "la fenêtre"

    Exemple:
    fibo de 6: 6 > 0, on boucle (6 - 2 + 1) fois:

    Étape 1: f n-2, f n-1, f n: 0 1 ?
    Étape 2: f n-2, f n-1, f n: 1 1 1
    Étape 3: f n-2, f n-1, f n: 1 2 2
    Étape 4: f n-2, f n-1, f n: 2 3 3
    Étape 5: f n-2, f n-1, f n: 3 5 5

    Tu vois bien que si on prend les valeurs de fibo on déplace les valeurs f n-2 et f n-1 vers la droite
    Étape 1: 0 1 1 2 3 5 8
    Étape 2: 0 1 1 2 3 5 8
    Étape 3: 0 1 1 2 3 5 8
    Étape 4: 0 1 1 2 3 5 8
    Étape 5: 0 1 1 2 3 5 8

    Édit:
    Citation Envoyé par Sve@r Voir le message
    Tu dis que t'as un problème aux lignes 16 et 17 mais déjà il ne compile même pas la ligne 5 !!!
    Cela me semblait suspicieux ces tirets hauts dans les noms de variables

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par poower Voir le message
    Mon probleme se situe aux lignes 16 et 17 , pourquoi il ya un echange de valeurs
    Bonjour

    En mathématiques, on exprime dans une suite le terme précédent "n" par "n-1". Celui situé encore avant sera "n-2" et celui situé après sera "n+1" et etc. On aurait pu écrire autre chose, on aurait pu écrire Ux, Uy et Uz mais c'est plus parlant d'écrire "n-1" signifiant qu'on recule d'une position par rapport à "n". On essaye d'ailleurs, dans l'écriture, de mettre "n-1" en tout petit pour bien signifier qu'on parle d'un décalage de position et non d'une simple soustraction.

    En C, la notation Fn-1 n'a pas le même sens. Elle signifie "calculer la valeur de la variable Fn enlevée de 1". La subtilité d'écriture dont je parle n'est pas possible. Si tu veux donc transcrire ton algo en C, tu dois alors respecter sa syntaxe et utiliser des noms de variables adéquats. Tu dis que t'as un problème aux lignes 16 et 17 mais déjà il ne compile même pas la ligne 5 !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre averti
    Homme Profil pro
    fdf
    Inscrit en
    Novembre 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : fdf

    Informations forums :
    Inscription : Novembre 2014
    Messages : 20
    Par défaut
    Merci pour vos reponces

    En faite, je n'etait pas la le jours ou ils ont corrigé cet exo, ducou quand on met sur papier c'est que le prof a validé...
    La premiere fois que jai vue le code ça me semblait bizzar rien que le fait de declarer des variables sous la forme F n-1 ...
    Ainsi que les variables utiliser pour echeange les valeurs...
    Mais je me suis dis c'est pas grave je vais comprendre l'algo jai limpression que je suis pas loin de comprendre...



    Bref, moi je reflechie comme ceci
    apres avoir fini le rang pour n=2 en ayant fait f i = f i-1 + f i-2

    Donc F 2 = F 1 + F0

    Apres pour passer a F 3 il nous faut F i-2 = F i-1 et F i-1 = F i

    Ducou moi je me dis ca :

    F i-2 = F 3-2 = F1

    Et f i-2 donc F1 prend la valeur de f i-1 qui est F2

    F1 devient F2

    Deuxieme instruction F i-1= Fi

    Et F i-1 = F 3-1 = F2

    Et f2 devient la nouvelle valeur a calculer

    Voila comment je vois le code

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par poower Voir le message
    Voilà comment je vois le code
    Ouais c'est ça. A chaque tour de boucle, la variable représentant U0 récupère la valeur placée dans U1, et la valeur représentant U1 récupère la valeur placée dans U2 qui devient alors disponible pour calculer le nouveau terme.
    Accessoirement les else ne servent à rien vu que si le code passe dans le if, il sort de la fonction. Mais certains puristes (qui confondent parfois "code rigide" et "code propre") imposent cette écriture donc si ton prof en fait partie autant ne pas aller le chatouiller.

    Citation Envoyé par poower Voir le message
    En faite, je n'etait pas la le jours ou ils ont corrigé cet exo, ducou quand
    En fait, tu n'étais probablement pas là non plus le jour où on tentait de t'enseigner l'orthographe au primaire ce qui est très dommage car contrairement aux légendes urbaines, l'orthographe est très très importante aussi dans la vie active. Du coup, tu te verras vite désavantagé par rapport à ceux qui savent écrire (mais je te rassure, d'après ce que je vois, ils deviennent de plus en plus rare...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Fonction de tri rapide
    Par charlottedie dans le forum VB.NET
    Réponses: 12
    Dernier message: 13/01/2010, 16h07
  2. cherche exercices niveau debutant
    Par arno92240 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 07/12/2009, 20h25
  3. [TP] Exercices pour débuter en (Turbo-)Pascal
    Par Xspirit dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 30/11/2006, 13h38
  4. [Sécurité] Fonction de cryptage rapide
    Par Invité dans le forum Langage
    Réponses: 22
    Dernier message: 23/02/2006, 17h51
  5. A la recherche d'exercices pour debutant
    Par Revan777 dans le forum OpenGL
    Réponses: 5
    Dernier message: 19/01/2006, 16h11

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