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 :

[Fortran 77] Retourner un tableau


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Par défaut [Fortran 77] Retourner un tableau
    Bonjour

    Je suis débutant en Fortran.
    Je voulais savoir si il est possible de retourner un tableau en fortran 77 avec une fonction.

    Voici un bout de 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
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    program resolv
     
           double precision A(3,3)
           double precision B(3)
           double precision val(3)
           double precision lin
           double precision col
           double precision i
           double precision j
     
            A(1,1)=1.
            A(1,2)=1.
            A(1,3)=1.
           A(2,1)=2
           A(2,2)=1
           A(2,3)=-1
           A(3,1)=4
           A(3,2)=2
           A(3,3)=1
     
           B(1)=1
           B(2)=3
           B(3)=-4
     
                   val=maxi(A)
     
           write(*,*) val(1), val(2), val(3)
     
           write(*,'(a,$)') 'Entrez :'
           read(*,*) 
     
           lin=val(2)
           col=val(3)
     
    c       A=ChLigne(A,B,lin,col)
    c       A=ChCol(A,lin,col)
     
     
     
    c       
           end
    c    	
     
           double precision function maxi(A)
           double precision A(3,3)
           integer i,j,k,l,col,lin
           double precision mx
           double precision val1(3)
     
           mx=A(1,1)
     
           do i=1,3
             do j=1,3
               if (DABS(A(i,j)).gt.mx) then
                 mx=A(i,j)
                 lin=i
                 col=j
               endif
             enddo
           enddo
     
           val1(1)=mx
           val1(2)=lin
           val1(3)=col
     
           maxi=val1 return
     
           end

    Je rencontre un problème ligne 35 : avec la commande val=maxi(A).
    En sachant que val est un tableau double précision et que la fonction maxi renvoi un double precision, je ne vois pas pourquoi il ne veut pas prendre ma commande; est-ce que cela est dû au fait que je veux renvoyer un tableau ?? Comment faire ?
    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Par défaut
    Je vais tenter de t'aider malgré mon peu de connaissances en la matière(je suis en trian d'apprendre a coder en f90).

    Tu es en train d'associer un tableau (val) à une valeur reelle(donner par maxi), un élément de tableau correspond a une valeur reelle mais pas un tableau entier avec tous ces éléments.

    J'espère que j'ai été assez clair et que ca va 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
    Sinon pour retourner le max d'un tableau, en f90 il suffit d'utiliser la fonction interne maxval.
    Il suffit alors de mettre le résultat dans ta variable. Par exemple tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    do i = 1,3
      val(i)= maxval(A(i,:))
    enddo
    Si tu veux retourner par exemple un max par colonne...

    Tu peux aussi retourner le max de A en entier avec maxval(A)

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour,

    En Fortran, une fonction sert essentielement dans les cas où une valeur et une seule est à renvoyer; dans les autres cas, on se sert de subroutines pour partager les données.

    Par exemple dans ton cas, il serait préférable de créer une subroutine maxi avec quatre arguments: A,mx,lin et col.

    Après appel à la subroutine, les valeurs mx,lin et col seraient ainsi connues dans le programme principal.

    Bon courage.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Par défaut
    je suis passé en subroutine, et ca marche
    merci beaucoup

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 14/10/2005, 19h32
  2. Retourner un tableau ?
    Par chateau_dur dans le forum C++
    Réponses: 8
    Dernier message: 20/08/2005, 13h11
  3. retourné un tableau
    Par elekis dans le forum C++
    Réponses: 5
    Dernier message: 17/03/2005, 16h03
  4. [plpgsql] comment retourner un tableau
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/06/2004, 22h09
  5. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 16h06

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