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 :

Allocation dynamique d'un tableau


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 40
    Par défaut Allocation dynamique d'un tableau
    Bonjour,

    Je m'adresse à vous tous sur ce forum car je n'ai pas trouvé la réponse à ma question.
    En effet, je voudrais savoir s'il est possible d'allouer un tableau dont les dimensions sont lues dans un fichier binaire et de retourner ce tableau en sortie.

    Je sais qu'allouer un tableau et lui attribuer ses dimensions dynamiquement en les récupérant dans un fichier sont possible mais je sais que l'instruction ALLOCATABLE n'est pas compatible avec l'instruction INTENT.

    Est ce que quelqu'un a déjà réalisé quelque chose de similaire?

    Merci d'avance pour vos réponses.

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    tu peux passer par un module:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    module toto
      real(kind=8),dimension(:),allocatable :: titi
    end module toto
    puis dans une autre routine:

    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
     
    subroutine litfichier
    use toto
    implicit none
     
    ...
    open(unit=15,.....)
      read(15)taille
    ...
      if (allocated(titi)) deallocate(titi)
      allocate(titi(taille))
    ...
      read(15)titi
    ...
      return
    end subroutine litfichier
    ensuite tu n'a qu'à charger le module toto dans la/les routine qui utilise le tableau titi !!!

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 40
    Par défaut
    Merci pour cette réponse
    J'ai donc suivi votre méthode qui m'a l'air vraiment bien. Mais j'avoue que j'ai du mal à voir comment déclarer le tableau et dimensions dans chaque fonction.

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 40
    Par défaut
    J'ai essayé d'inclure tes suggestions dans mon code mais j'obtiens les erreurs suivante :

    1) Number of subscripts declared and used do not match (PROJ)
    2) Illegal structure component reference.

    PROJ correspond à titi dans ton exemple.
    La deuxième erreur intervient lorsque j'essai de lire dans le fichier (je récupère ce que je lis dans le tableau PROJ avec l'instruction READ).

    Je ne comprend pas du tout la première erreur. Auriez-vous une idée de ce à quoi elle peut correspondre?

  5. #5
    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
    Par défaut
    Citation Envoyé par Dreyliciouss Voir le message
    1) Number of subscripts declared and used do not match (PROJ)
    C'est un problème de dimension. Tu fais référence à un tableau avec un nombre d'indice différent du nombre de dimensions déclaré. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    real, dimension(:,:) :: Tableau ! 2 dim
    ...
    Tableau(3) = ... ! 1 dim

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 40
    Par défaut
    Nikel! L'erreur a disparue par contre, à la dernière ligne de code lorsque j'essai d'allouer les dimensions a et b lues précédemment dans le fichier, il me dit "ALLOCATE argument must be ALLOCATABLE or POINTER. (PROJ)". Cela vient sans doute de la déclaration de a et b.

    Mais quand je déclare a et b avec la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INTEGER, ALLOCATABLE :: a,b
    Il me dit :

    ALLOCATABLE or POINTER array-spec must be deferred shape. (A)
    ALLOCATABLE or POINTER array-spec must be deferred shape. (A)

    et l'erreur précédente est toujours présente. Je ne sais pas comment les déclarer correctement.

Discussions similaires

  1. [debutant] allocation dynamique d'un tableau.
    Par méphistopheles dans le forum Débuter
    Réponses: 3
    Dernier message: 16/03/2007, 12h45
  2. Réponses: 2
    Dernier message: 05/03/2007, 18h37
  3. Réponses: 67
    Dernier message: 13/02/2007, 18h08
  4. Réponses: 13
    Dernier message: 01/10/2006, 00h25
  5. [PRO*C] Allocation dynamique d'un tableau de VARCHAR
    Par NéalZheimer dans le forum Interfaces de programmation
    Réponses: 5
    Dernier message: 07/07/2006, 13h02

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