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 :

Lire a tableau de 2 colonnes


Sujet :

Fortran

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut Lire a tableau de 2 colonnes
    Bonjour,

    J'ai une question de base, mais nulle part je n'ai trouvé sur le web, ni dans mon document de référence comment le faire.

    J'ai un fichier .dat avec deux colonnes de valeurs numériques:

    ex:

    -1.0 2.00
    0.2 0.98
    0.3 0.96
    0.4 0.92
    0.5 0.88
    0.6 0.83
    0.7 0.76
    0.8 0.70
    0.9 0.62
    1.0 0.54
    1.1 0.45
    1.2 0.36
    1.3 0.27
    1.4 0.17
    1.5 0.07
    1.6 -0.03
    1.7 -0.13
    1.8 -0.23

    Je voudrais écrire ces valeurs dans un tableau à 2 dimensions. Le programme que j'ai fait réussi à lire les valeurs et à les positionner aux bons endroits dans mon tableau, mais il y a plusieurs erreurs:

    Ne lit les pas signes négatifs, ni de la première colonne, ni de la 2e colonne. Rendu à la valeur 1.0 de la première colonne, il me donne 0.00.

    Voici la sortie que j'obtiens:

    1.00
    2.00
    0.20
    0.90
    0.30
    0.90
    0.40
    0.90
    0.50
    0.80
    0.60
    0.80 etc.

    Voici le code jusqu'à présent.

    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
          program read_table
          REAL*8 Array(:,:)
          INTEGER n
          ALLOCATABLE Array
          n =0
          open(UNIT=200, FILE='Cosines', STATUS='OLD')
          do
          read (200,*,end=101) ; n = n+1 ! count records
          end do
    101   rewind (200)
          ALLOCATE (Array(2,n))
          do i=1,n
          read(200,100) Array(1,i), Array(2,i)
    100   FORMAT(1X, F3.2,F4.2)
          end do
          close (200)
          write(6,300) Array
    300   FORMAT(F4.2)   
          end
    Je suis persuadé que c'est une histoire de format, mais je n'arrive pas à solutioner le problème.

    Merci de votre aide.

  2. #2
    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
    Les problèmes viennent effectivement des formats.

    À la lecture, tu utilises :

    read(200,100) Array(1,i), Array(2,i)
    100 FORMAT(1X, F3.2,F4.2)

    pour lire :

    -1.0 2.00
    0.2 0.98
    0.3 0.96
    ...

    Ton format indique de sauter le premier caractère (1x), de lire les 3 caractères suivants comme réels, puis les 4 suivants comme réels. Ce n'est pas facile à voir dans le forum, mais il y a 2 espaces entre les 2 chiffres sur chaque ligne. Ça donne donc :

    "-" rejeté, "1.0" dans Array(1,1), puis " 2." dans Array(2,1), et "00" sont ignorés.

    "0" rejeté, ".2 " dans Array(1,2), puis " 0.9" dans Array(2,2), et "8" est ignoré.

    Et ainsi de suite.

    Suggestion : pour lire un tel fichier, il est beaucoup plus simple d'utiliser un format libre : read(200,*) Array(1,i), Array(2,i)

    À l'écriture, tu fournis un format avec un seul masque : (f4.2)
    Tu obtiens donc un seul élément par ligne :

    Array(1,1)
    Array(2,1)
    Array(1,2)
    Array(2,2)
    ...

    Tu devrais donc prévoir un format à 2 masques : (f4.2,f4.2) ou (2f4.2).

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut
    Merci beaucoup. Tout fonctionne bien maintenant!

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/03/2006, 20h09
  2. [tableau] indicage des colonnes
    Par Nomade95000 dans le forum Oracle
    Réponses: 3
    Dernier message: 03/01/2006, 18h04
  3. Réponses: 1
    Dernier message: 29/12/2005, 19h04
  4. question xml / xslt pour tableau a 3 colonnes
    Par taybott dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/10/2005, 01h22
  5. tableau avec 1 colonne sur 3 sans cadre
    Par brasco06 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 21/04/2005, 18h44

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