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] Exemple de programme de calcul de factorielle


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut [Débutant] Exemple de programme de calcul de factorielle
    Bonjour,

    je débute en fortran, et j'aimerais avoir un exemple de programme pour la factorielle.
    Je voudrais en fait, une fonction nommée fact(a) qui calcule la factorielle et affiche la valeur dans le programme principale.
    Est-ce que quelqu'un pourrait me donner cet exemple, svp ?

    Merci.

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Par défaut
    Bonjour,
    essay ca , ca depend aussi si tu utilise f77 ou f90

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
           program expo
           print*,'7!=', fact(7)
           end
     
            function fact(m)
            integer m
            fact=1
            do i=1,m
              fact=fact*i
            enddo
            return
            end
    bon courage

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut
    j'ai essayé de faire le programme, j'ai écrit :

    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
    program factorielle
    implicit none
    real :: fact
    real :: a
     
    print *, 'entrez un nombre'
    read *, a
    call fact(a)
     
    print *, 'le resultat est', fact(a)
     
    end function factorielle
     
     
    real function fact(a)
    implicit none
    real, intent(in) :: a
    real :: f
    real :: fact
     
    fact = a*5
     
    end function fact
    c'est sous f90, et le code ne marche pas.
    Quelqu'un peut corriger le programme, svp ?

    merci.

  4. #4
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Citation Envoyé par crow56 Voir le message
    j'ai essayé de faire le programme, j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    program factorielle
    implicit none
    real :: fact
    real :: a
    
    print *, 'entrez un nombre'
    read *, a
    call fact(a)
    
    print *, 'le resultat est', fact(a)
    
    end function factorielle
    Il faut que tu mettes end program factorielle et non end function

    Une fonction ne s'appelle pas avec call ! Ton print suffit à appeler la fonction, voici ton programme corrigé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
          program factorielle
          implicit none
          real :: fact
          real :: a
     
          print *, 'entrez un nombre'
          read *, a
     
          print *, 'le resultat est', fact(a)
     
          end program factorielle

    Voici un version plus "standard" de ta fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    function fact(a)
    implicit none
    real, intent(in) :: a
    real :: fact
     
    fact = a*5
     
    end function fact
    Le real::f ne te servais à rien !
    Tu déclarais 2 fois la fonction, une fois avec real::fact et l'autre fois avec
    real function fact(a) (c'est une façon plus ancienne de faire) !

    Juste une observation, ce n'est pas une factorielle que tu calcules mais je pense que lorsque ça va marcher tu arrangeras ça !

    Pour ce qui est des factorielles, il faut que tu fasses très attention aux dépassement de capacité ! Normalement une factorielle est un entier mais les entier sont vite limités. De même, selon les factorielle que tu calcules il sera préférable que tu utilises double precision au lieu de real !
    Mais suivant la raison pour laquelle tu calcules une factorielle il est peut être indispensable que ce soit un entier ....

    Bref dans tous les cas fait attention et si tu en as la possibilité il est préférable de calculer un rapport de factorielle que la factorielle toute seule !

  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 ajoutes qu il est preferable que tu met return a la fin de ta fonction

Discussions similaires

  1. Calcul de factorielle : programme inopérant
    Par lass vegas dans le forum Débuter
    Réponses: 6
    Dernier message: 03/11/2014, 12h07
  2. Réponses: 11
    Dernier message: 19/09/2010, 14h37
  3. Programme de calcul d'une factorielle
    Par hassen_I3 dans le forum Assembleur
    Réponses: 1
    Dernier message: 14/12/2006, 18h35
  4. [Débutant]Créer un programme exécutable?
    Par steelidol dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/04/2005, 17h52
  5. fonction qui calcule la factorielle ?
    Par piff62 dans le forum C
    Réponses: 8
    Dernier message: 27/02/2005, 11h00

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