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

  1. #1
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    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 habitué
    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
    Points : 185
    Points
    185
    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 régulier 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
    Points : 82
    Points
    82
    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 habitué
    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
    Points : 185
    Points
    185
    Par défaut
    c'est vrai que c'est plus simple comme ça...

  5. #5
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    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
    Points : 1 346
    Points
    1 346
    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.

  7. #7
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut
    oui c est en f77 que ca na pas marche'

  8. #8
    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
    Points : 1 346
    Points
    1 346
    Par défaut
    En F77, il y a différentes pistes (avec évidemment plein de variantes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write(*,*) 'V(', i, ') = ', vn
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          write(*,10) i,vn
    10    format('V(',i3,') =',i10)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
          if (i .lt. 10) then
             write(*,10) i,vn
          elseif (i .lt. 100) then
             write(*,11) i,vn
          else
             write(*,12) i,vn
          endif
     
    10    format('V',i1,' =',i10)
    11    format('V',i2,' =',i10)
    12    format('V',i3,' =',i10)

+ 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