Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Fortran
Fortran Forum d'entraide sur la programmation en Fortran. Avant de poster -> FAQ Fortran
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/11/2012, 11h47   #1
maxfiedler87
Invité de passage
 
Homme
Inscription : 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!
maxfiedler87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2012, 12h01   #2
FR119492
Rédacteur/Modérateur
 
Jean-Marc Blanc
Inscription : avril 2007
Messages : 2 837
Détails du profil
Informations personnelles :
Nom : Jean-Marc Blanc
Âge : 72

Informations forums :
Inscription : avril 2007
Messages : 2 837
Points : 3 971
Points : 3 971
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)
FR119492 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2012, 13h00   #3
maxfiedler87
Invité de passage
 
Homme
Inscription : novembre 2012
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2012
Messages : 2
Points : 0
Points : 0
Salut Jean-Marc,

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

Max
maxfiedler87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2012, 02h00   #4
jyloup
Candidat au titre de Membre du Club
 
Inscription : 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
jyloup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2012, 07h57   #5
Ehouarn
Membre éclairé
 
Inscription : mars 2007
Messages : 326
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 326
Points : 378
Points : 378
Bonjour,

Citation:
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.
Ehouarn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h24.


 
 
 
 
Partenaires

Hébergement Web