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

Fortran Discussion :

[Débutant] La suite Fibonnaci


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut [Débutant] La suite Fibonnaci
    Bonjour,

    J'ai écrit un code pour programmer la suite de Fibonacci. Ca marche bien mais à l'exécution je trouve :
    v0= 1.
    v1= 1.
    vn 2
    vn 3
    vn 5
    vn 8
    vn 13
    vn 21
    vn 34
    vn 55
    vn 89
    vn 144
    vn 233
    vn 377
    vn 610
    vn 987
    vn 1597
    par exemple,

    et moi je veux la forme suivante :
    v0= 1.
    v1= 1.
    v2 2
    v3 3
    v4 5
    v5 8
    v6 13
    par exemple,

    alors où est-ce que je dois modifier mon code ?

    Voilà mon code :
    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
          program fibonnaci
          integer n,i,vn
          print*,'donner n'
          read*,n
          if(n.LT.3)then
             print*,'error'
          else
             v0=1
             v1=1
             print*,'v0=',v0
             print*,'v1=',v1
             do  i=3,n
               vn=v0+v1
               v0=v1
               v1=vn
               print*,'vn',vn
             enddo
           endif
           end

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2006
    Messages : 197
    Par défaut
    print*,'vn',vn
    Si tu donne l'instruction d'écrire la chaine de caractère 'Vn', Fortran t'écrira Vn. Il ne va pas deviner tout seul que tu veut faire varier n

    Dans ce cas, cherche dans le forum une discussion a propos de 'concatenation d'un entier dans une chaine de caractère' (ou quelque chose comme ça). ça devrai t'aider...

  3. #3
    Membre confirmé Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Par défaut
    remplace le par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write(*,'(A1,I0,A3,I0)') 'V', i, ' = ', vn
    par exemple.


    "write" permet de formatter ta sortie. Ici A1 indique une chaine de caractère de longueur 1. I0 indique un entier dont tu connais a priori pas la taille.

    tu peux aussi faire avec une étiquette:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          write(*,100) 'V', i, ' = ', vn
    100   format(A1,I0,A3,I0)
    pour la définition de ton format.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2006
    Messages : 197
    Par défaut
    c'est vrai que c'est plus simple comme ça...

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    J'ai mis comme tu m'as dit :
    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
    program fibonnaci
    integer n,i,vn
    print*,'donner n'
    read*,n
    if(n.LT.3)then
    print*,'error'
    else
    v0=1
    v1=1
    print*,'v0=',v0
    print*,'v1=',v1
    do i=3,n
    vn=v0+v1
    v0=v1
    v1=vn
     write(*,'(A1,I0,A3,I0)') 'V', i, ' = ', vn
    enddo
    endif
    end
    mais ça n'a pas marché; d'autre part, je ne comprends pas ce write(*,.....)

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    Citation Envoyé par feynman Voir le message
    J ai mit comme tu m as dit (...) mais ca n a pas marché
    Ça n'a pas marché ? Ça n'a pas compilé ? Message d'erreur ? Ça plante à l'exécussion ? Ce n'est pas joli à l'exécussion ? Pourrais-tu être plus précis ?

    Citation Envoyé par feynman Voir le message
    ...
    write(*,'(A1,I0,A3,I0)') 'V', i, ' = ', vn
    ...
    je ne comprend pas ce write(*,.....)
    Ça écrit sur Stdout (c'est le *) avec le format '(...)'. C'est équivalent à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          write(*,10) 'V', i, ' = ', vn
    10    format(A1,I0,A3,I0)
    En supposant que « ca n a pas marché » signifie « Ça n'a pas compilé », il est possible que le problème provienne du fait que tu utilise un compilateur F77. En effet, le format directement dans le write n'est pas valide en F77, ni le masque i0.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/11/2009, 08h58
  2. Réponses: 6
    Dernier message: 01/12/2006, 17h32
  3. Réponses: 6
    Dernier message: 21/08/2006, 00h06
  4. Suite problème de débutant
    Par P.G dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/06/2006, 23h54
  5. [débutant] ecrire a la suite d'un fichier
    Par mavina dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 08/01/2006, 21h34

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