Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut Question concernant read

    Bonjour,

    je suis nouveau ici et ai besoin d'aide pou lire des fichiers avec Fortran 90.

    J'ai des Fichier .txt, qui peuvent avoir plusieurs formes, par example

    test1 : 5000
    test2 : 900
    test3 : 40

    ou dans un autre ordre

    test2 : 7654
    test3 : 30
    test4 : 543
    test1 : 54

    donc: l'ordre des lignes et le nombre de ligne n'ai pas connu!

    J'aimerai maintenant lire avec Fortran 90 la valeur de test3 par example. Est-il possible de lire une valeur après un mots clef? Si oui, quelqu'un pourrai me donner un petit example? Merci!

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro Jean-Marc Blanc
    Comme retraité, des masses
    Inscrit en
    avril 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Marc Blanc
    Âge : 73
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2007
    Messages : 2 954
    Points : 4 551
    Points
    4 551

    Par défaut

    Salut!
    Est-ce que ça va seulement de test1 à test9 ou ça va plus loin?
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  3. #3
    Invité de passage
    Homme Profil pro
    Inscrit en
    novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut

    Salut Jean-Marc,

    d'abord merci de vouloir m'aider! Je pense que jusqu'à test9 ça suffit pour l'instant. Merci,

    Max

  4. #4
    Candidat au titre de Membre du Club
    Inscrit en
    avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : avril 2009
    Messages : 31
    Points : 12
    Points
    12

    Par défaut problème similaire : READ x : x doit dejà etre typé

    Bonjour,

    j'aurai bien répondu à ta question si je savais comment distinguer un type lors de l'appel de READ :
    en effet, en y réfléchissant bien, quand tu fais READ x,
    x doit déjà avoir un type déclaré et la valeur lue dans la ligne du fichier sera affectée du type donné.

    Si ensuite tu fais PRINT x sur l'écran, tu verras que ça affiche n'importe quoi si x est autres chose
    qu'un entier et qu'on l'avait défini de type entier dans les déclarations par exemple.

    Et c'est là tout le point faible de fortran : j'ai posté un message similaire dans
    le forum, mais toujours pas de réponse (pour récupérer que les réels
    présents dans un fichiers texte) je pense que soit c'est impossible (ce serait
    une lacune de fortran) soit il me manque un ingrédient (une fonction du genre "typeof(x)"
    donnant le type de x pour distinguer les types dans un fichier texte.

    Si cette fonction existait tu pourrais facilement distinguer les chaines de
    caractères suivies des chiffres. Cependant j'ai trouvé des documents sur le
    net à propos des descripteurs du genre '(a,i2,a,i6)' dans READ et WRITE qui
    définissent quel type de données doit etre lue ou écrites dans un fichiers.
    C'est assez compliqué car peu d'exemples clairs et complets sur ces
    descripteurs de format par exemple cette page

  5. #5
    Membre éprouvé
    Inscrit en
    mars 2007
    Messages
    370
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 370
    Points : 448
    Points
    448

    Par défaut

    Bonjour,

    J'aimerai maintenant lire avec Fortran 90 la valeur de test3 par example. Est-il possible de lire une valeur après un mots clef? Si oui, quelqu'un pourrai me donner un petit example?
    Vu que ton fichier est formaté avec une même mise en forme pour chaque ligne, il n'est pas trop difficile de lire seulement les informations dont tu as besoin. Ce qui n'est pas trop clair dans ta question est si tu cherche seulement un élément particulier du fichier ou si tu les veux tous (éventuellement triés dans l'ordre donné par le nombre suivant 'test').
    Dans ce dernier cas, on peut s'en sortir avec quelque chose comme:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    program lecture
    
    implicit none
    
    integer,parameter :: nblignes=4 ! nombre de lignes du fichier
    integer :: numero
    integer :: valeur
    integer :: donnees(nblignes) ! donnees, une fois rearrangees dans l'ordre
    
    integer :: i
    
    open(42,file="fichier.txt") ! on ouvre le fichier
    do i=1,nblignes
      ! on lit une ligne du fichier
      read(42,'(tr4,i1,tr3,i5)')numero,valeur
      write(*,*) "numero=",numero,"valeur=",valeur
      ! on stocke la donnee lue dans la case correspondante du tableau   
      donnees(numero)=valeur
    enddo
    
    write(*,*) "donnees() =",donnees
    end program lecture
    Tout repose sur le bon usage du descripteur de format de la lecture (trN = "sauter N caracteres" ; "iN" lire un entier de N chiffres").

    Bonne continuation.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •