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 :

Tableau de structures


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    NairodDorian
    Invité(e)
    Par défaut Tableau de structures
    Bonjour,

    Je suis nouveau en FORTRAN (je connais le C) et je suis confronté à un problème.
    J'ai la structure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    STRUCTURE /POINT/
    INTEGER X
    INTEGER Y
    END STRUCTURE
    Je voudrai appelé une fonction qui renvoie un tableau de POINT de taille I ou I est un entier passé en paramètre à la fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    (STRUCTURE DE TYPE POINT) FUNCTION TEST(I)
    INTEGER I
     
    (CREER MON TABLEAU DE STRUCTURES)
     
    ! ...
     
    TEST = (MON TABLEAU DE STRUCTURES)
    END FUNCTION
    Ce qui est écrit en parenthèse c'est ce que je ne suis pas arriver à écrire correctement en FORTRAN.

    Pouvez vous m'aidé svp?
    Merci d'avance...

  2. #2
    Membre expérimenté Avatar de Grame
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Par défaut
    Bonjour,


    Je créerais un module de définitions (équivalent au .h en C) que j'utiliserais
    ensuite dans la routine. Par exemple :

    Fichier definitions.f90
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    module definitions
     
    type point
       integer :: x, y
    end type point
     
    end module definitions
    Fichier remplir_tableau.f90
    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
     
    subroutine remplir_tableau (tableau_point, i)
     
       use definitions 
       implicit none
       integer, intent(in) :: i
       type (point), dimension(i), intent(out) :: tableau_point
       integer j
     
       do j=1, i
          tableau_point(j)%x = ... 
          tableau_point(j)%y = ...   
       end do
     
    end subroutine remplir_tableau
    Il peut aussi être intéressant de mettre la subroutine dans un module
    si le code complet est assez volumineux.

  3. #3
    NairodDorian
    Invité(e)
    Par défaut
    Merci mais ce n'est pas tout à fait ça que j'aurai voulu.

    En fait il faudrait que la fonction me retourne un tableau de type point (comme tu l'as marqué) crée (allouer) dans la fonction de taille I.

    Genre en C :
    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
     
     
    struct point
    {
    int x;
    int y;
    };
     
    void test(point* ppt, int size)
    {
    ppt = malloc(sizeof(point) * (size + 1));
    // ...
    }
     
    void a(void)
    {
    struct *ppt;
    int i = 10;
     
    test(ppt, i);
     
    //...
    free(ppt);
    }
    Mon tableau n'a pas de "taille" avant l'appel mais après l'appel mon tableau est alloué de I éléments avec des modifications dedans.

    Si vous pouviez m'aidé
    Merci d'avance!

  4. #4
    Membre expérimenté Avatar de Grame
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Par défaut
    Ah ok, c'est un tableau dynamique.


    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
     
    subroutine remplir_tableau
     
       use definitions 
       implicit none
       integer, parameter :: i = 10
       type (point), dimension(:), allocatable :: tableau_point
       integer j
     
       allocate (tableau_point(i))
     
       do j=1, i
          tableau_point(j)%x = ... 
          tableau_point(j)%y = ...   
       end do
     
       deallocate (tableau_point)
    end subroutine remplir_tableau
    C'est mieux là ?

  5. #5
    NairodDorian
    Invité(e)
    Par défaut
    C'est tout à fait ça !!!
    Merci beaucoup Grame

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/05/2006, 11h46
  2. Tableau de structures en parametre d'une fonction
    Par -No Comment- dans le forum C
    Réponses: 19
    Dernier message: 29/03/2006, 15h00
  3. [VB6]Tri multi-colonnes sur tableau de structure
    Par ELGUEVEL dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/02/2006, 08h02
  4. Réponses: 9
    Dernier message: 13/02/2006, 08h39
  5. Trier un tableau de structures
    Par Yux dans le forum C
    Réponses: 7
    Dernier message: 05/11/2005, 17h28

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