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 :

Wrong data type for reference to FUNCTION MOYPOS from procedure main


Sujet :

Fortran

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Wrong data type for reference to FUNCTION MOYPOS from procedure main


    comme chui un debutant dans le fortran ^^ , je me suis tt doucement lancé "en mettant deux ceintures lol " dans le Fortran
    je viens de lire le cours (Function , subroutine) ,et par conséquent :faire des applications

    je voulais faire un simple programme qui calcule la moyenne des elements positifs et negatifs (pour 3 matrice A ,B ,C) à l'aide des fonctions Moypos et Moyneg

    voila le programme :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    dimension A(3,3),B(4,4),C(2,2)
          real moynegA,moyposA,moynegB,moyposB,moynegC,moyposC
          write(*,*) 'Donner les valeurs de A'
          do 10 i=1,3
       10 read(*,*) (A(i,j),j=1,3)
          write(*,*) 'Donner les valeurs de B'
          do 20 i=1,4
       20 read(*,*) (B(i,j),j=1,4)
          write(*,*) 'Donner les valeurs de C'
          do 30 i=1,2
       30 read(*,*) (C(i,j),j=1,2)
          moynegA=moyneg(A,3)
          moyposA=moypos(A,3)
          moynegB=moyneg(B,4)
          moyposB=moypos(B,4)
          moynegC=moyneg(C,2)
          moyposC=moypos(C,2)
          write(*,*) 'moynegA=',moynegA,'moyposA=',moyposA
          write(*,*) 'moynegB=',moynegB,'moyposB=',moyposB
          write(*,*) 'moynegC=',moynegC,'moyposC=',moyposC
          end
          real function moypos(M,n)
          dimension M(4,4)
          S=0
          P=0
          do 40 i=1,n
          do 40 j=1,n
          if (M(i,j).GT.0) then
          S=S+M(i,j)
          P=P+1
          Endif
       40 continue
          moypos=S/P
          Return
          End
          Real function moyneg(M,n)
          Dimension M(4,4)
          S=0
          N=0
          Do 50 i=1,n
          Do 50 j=1,n
          If (M(i,j).LT.0) then
          S=S+M(i,j)
          W=W+1
          endif
       50 continue
          moyneg=S/W 
          return
          end
    en le compilant dans [Microsoft developer studio] j'ai eu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    --------------------Configuration: fat - Win32 Debug--------------------
    Compiling Fortran...
    C:\MSDEV\BIN\function_subroutine.for
    C:\MSDEV\BIN\function_subroutine.for : error FOR2205: wrong data type for reference to FUNCTION MOYPOS from procedure main
    C:\MSDEV\BIN\function_subroutine.for : warning FOR4227: argument M (number 1) in reference to procedure MOYPOS from procedure main incorrect: has the wrong data type
    C:\MSDEV\BIN\function_subroutine.for : error FOR2205: wrong data type for reference to FUNCTION MOYNEG from procedure main
    C:\MSDEV\BIN\function_subroutine.for : warning FOR4227: argument M (number 1) in reference to procedure MOYNEG from procedure main incorrect: has the wrong data type
    Error executing fl32.exe.
    function_subroutine.obj - 2 error(s), 2 warning(s)
    de l'aide !


    mais sincerement ,de l aide ! ca fait plus de 4 heures que cherche une solution ^^ lool

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour,

    c'est une volonté/contrainte de travailler en fortran 77 ?

    dans un premier temps, je te conseille de toujours utiliser "implicit none" dans tes programmes, ça évite d'avoir de mauvaises surprises et c'est donc plus un ami qu'un ennemi .

    ensuite je suis un peu allergique aux "do" avec des étiquettes.

    sinon dans la déclaration de tes fonctions, tu as écrit:

    alors que je pense tu voulais écrire:

    sinon ça ne va fonctionner que pour A

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/05/2010, 21h13
  2. Réponses: 2
    Dernier message: 31/03/2009, 09h58
  3. IB5 : "invalid data type for arithmetic"
    Par ZoRRo75 dans le forum InterBase
    Réponses: 2
    Dernier message: 21/11/2008, 14h33
  4. Réponses: 6
    Dernier message: 12/05/2008, 14h56
  5. Erreur:No size set for variable length data type: String
    Par yacinus2007 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 03/07/2007, 18h39

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