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 :

lecture de tableau à 2 dimensions


Sujet :

Fortran

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Points : 53
    Points
    53
    Par défaut lecture de tableau à 2 dimensions
    Bonjour (encore )

    Je suis entrain de lire un fichier texte , ce fichier possède des données par colonnes disposées ainsi sur n lignes:

    le problème c'est que je souhaite avoir une seule variable du genre X(5,n) ou stocker le tout et me débarasser des Xi.

    Malheureusement mon code ne marche pas!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		do i = 1, n  ! nombre de ligne du fichier
    		do j = 1, n_Xi  ! nombre de colonnes
    		read(7,*) X(j,i)
    		enddo
                    enddo
    est ce que vous auriez une idée de comment procéder à la lecture de ce tableau?

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Points : 191
    Points
    191
    Par défaut
    Salut,

    Alors, pour pouvoir lire ce fichier, s'il ne contient que des valeurs numériques essayes en mettant le tableau X sous la forme d'un tableau dynamique lors de la déclaration des variables puis:
    !Declaration des variables
    Allocatable, dimension (:,: ) :: X
    ...
    Allocate(X(n_Xi,n))

    read(7,*) X
    ...

    Deallocate (X)
    Si je ne me trompes pas, ça devrait marcher.

  3. #3
    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
    Points : 1 346
    Points
    1 346
    Par défaut
    Citation Envoyé par manaliac Voir le message
    ...
    Je suis entrain de lire un fichier texte , ce fichier possède des données par colonnes disposées ainsi sur n lignes:

    le problème c'est que je souhaite avoir une seule variable du genre X(5,n) ou stocker le tout et me débarasser des Xi.

    Malheureusement mon code ne marche pas!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		do i = 1, n  ! nombre de ligne du fichier
    		do j = 1, n_Xi  ! nombre de colonnes
    		read(7,*) X(j,i)
    		enddo
                    enddo
    ...
    Le problème est qu'à chaque read, il y a saut de ligne. Ton programme ne lit donc que le X1 de chaque ligne. Tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		do i = 1, n  ! nombre de ligne du fichier
    		   read(7,*) X(:,i)
                    enddo
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		do i = 1, n  ! nombre de ligne du fichier
    		   read(7,*) (X(j,i),j=1,n_Xi)
                    enddo
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		do i = 1, n  ! nombre de ligne du fichier
    		   read(7,*) X(1:n_Xi,i)
                    enddo
    Il serait également possible de combiner ta stratégie (2 boucles) avec la clause advance='no', mais c'est beaucoup trop compliqué pour ton problème...

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Points : 53
    Points
    53
    Par défaut
    Bonjour,
    tu veux dire qu'il suffit que j'ecrive juste

    read(7,*) X

    sans préciser les indices i,j pour que ça marche? pas de boucle do?

    (j'ai déjà alloué la taille du tableau par un allocate )

  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
    Points : 1 346
    Points
    1 346
    Par défaut
    Oui ça va fonctionner, MAIS :

    La lecture d'un tableau entier par un format libre (*) offre très peu de contrôle. Je te suggère donc, suite à la lecture, de valider si possible le contenu du tableau.

    C'est ce problème de contrôle qui oblige souvent à découper la lecture en ligne et à utiliser une variable caractère intermédiaire. Tu trouveras plusieurs problèmes résolus par cette stratégie dans le forum.

Discussions similaires

  1. Lecture tableau multiple dimension
    Par Pelote2012 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/02/2013, 11h12
  2. [Tableaux] Lecture d'un tableau multi-dimension
    Par nico341 dans le forum Langage
    Réponses: 16
    Dernier message: 15/04/2008, 15h24
  3. Réponses: 4
    Dernier message: 29/11/2006, 12h00
  4. [Collections] lecture tableau 2 dimensions
    Par heloise dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 30/09/2004, 10h49
  5. Réponses: 23
    Dernier message: 21/08/2003, 07h16

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