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 :

Compter l'occurence d'une chaine de caractères lors de la lecture d'un fichier texte


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 Compter l'occurence d'une chaine de caractères lors de la lecture d'un fichier texte
    Bonjour,

    je dois lire un fichier texte qui ressemble à ceci :

    VARIABLES = "X"
    "Y"
    "Z"
    ZONE T="Zone 1 : D=0 (1) [ 1] I=0 (3.655000e+05)"

    STRANDID=0, SOLUTIONTIME=0
    I=45, J=30, K=61, ZONETYPE=Ordered


    4.822499630E-001 4.847710010E-001 4.873359680E-001 4.899449830E-001 4.925979850E-001
    .........

    ZONE T="Zone 2 : D=0 (1) [ 1] I=0 (3.655000e+05)"

    STRANDID=0, SOLUTIONTIME=0
    I=45, J=30, K=61, ZONETYPE=Ordered

    4.822499630E-001 4.847710010E-001 4.873359680E-001 4.899449830E-001 4.925979850E-001
    ............
    Seulement je ne suis pas sensée connaitre le nombre de zone en début de fichier, il me faudrait parcourir tout le fichier, et compter le nombre d'occurence de la chaine de caractères 'ZONE T'.

    Est ce que vous auriez une idée de comment procéder à faire tout cela?

    Merci de votre aide!

    Manal

  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
    Points : 1 346
    Points
    1 346
    Par défaut
    Tu dois lire le fichier ligne par ligne dans une variable caractère avec le format A et tu teste à chaque fois si le contenu de la variable est ce que tu cherches... Ça ressemblera à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    character (256) :: Ligne
    ...
    do
       read(22,'(a)',iostat=k) Ligne
       if (k /= 0) exit
       if (Ligne(1:6) == 'ZONE T') Nbr = Nbr + 1
    enddo
    ...

  3. #3
    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
    Ce que je ne comprends, c'est ou il va stocker le nombre de "Zone T" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    character (256) :: Ligne
    integer Nbr
    ...
    do
       read(22,'(a)',iostat=k) Ligne
       if (k /= 0) exit
       if (Ligne(1:6) == 'ZONE T') Nbr = Nbr + 1
    enddo
    ...
    Je voudrais qu'il compte l'occurence de la chaine de caractères "Zone T" dans le fichier, et mon fichier contient à peu près 210000 lignes, et plusieurs "ZONE T".

    Merci

  4. #4
    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
    Ce que je ne comprends, c'est ou il va stocker le nombre de "Zone T" ?
    Le nombre d'occurence est dans la variable Nbr. De là, ça dépend de ce que tu fais de la variable. Tu peux par exemple l'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    character (256) :: Ligne
    integer Nbr
    ...
    Nbr = 0
    do
       read(22,'(a)',iostat=k) Ligne
       if (k /= 0) exit
       if (Ligne(1:6) == 'ZONE T') Nbr = Nbr + 1
    enddo
    write(*,*)'La chaîne "ZONE T" apparait ',Nbr,' fois dans le fichier.'
    ...

  5. #5
    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
    Salut,

    En effet, tu avais raison.

    Merci beaucoup de ton aide ! (je retiendrai ce code jusqu'à ma fin de programmeuse )

    Manal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 22/07/2008, 22h03
  2. Nombre d'occurence d'une chaine de caractère
    Par C_Mila dans le forum Excel
    Réponses: 4
    Dernier message: 06/02/2008, 12h42
  3. Réponses: 2
    Dernier message: 14/11/2007, 16h43
  4. Réponses: 4
    Dernier message: 09/09/2006, 10h18
  5. Réponses: 4
    Dernier message: 16/12/2005, 19h36

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