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 un tableau dans un fichier externe


Sujet :

Fortran

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Lire un tableau dans un fichier externe
    Bonjour,

    J'ai un fichier que je souhaite lire qui fait plus de 2 millions de lignes... Il est sous cette forme:
    nom1 1 1234
    nom1 2 12345
    nom2 1 234
    etc....

    Je souhaite lire le fichier et avoir un tableau de la sorte: nom1(1)=1234 nom1(2)=12345 et nom2(1)=234...

    Si je fais un read(1,*) text(i),val1(i),val(2)
    évidemmment, ça ne marche pas.

    Je cale lamentablement!
    Merci de votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour,

    - est ce que le nombre de "nom" est fixe ou est ce qu'il peut varier d'un fichier à l'autre ?

    - est ce que le nombre de lignes pour un "nom" donné est fixe ou peut varier d'un "nom" à l'autre ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par kango Voir le message
    bonjour,

    - est ce que le nombre de "nom" est fixe ou est ce qu'il peut varier d'un fichier à l'autre ?

    - est ce que le nombre de lignes pour un "nom" donné est fixe ou peut varier d'un "nom" à l'autre ?

    "nom" est une chaine de caractères et j'ai environ 280 chaines de caractères différentes.
    C'est un fichier avec des comptages routiers: 280 boucles de comptages avec chacune un nom différent et pour chaque boucle, à chaque heure de l'année un nombre de véhicules associé.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    tu ne réponds pas vraiment aux questions

    tu dis que tu as environ 280 "noms" différents, cette information tu la connais avant d'ouvrir le fichier ?

    combien de lignes tu as pour chaque "nom" ?

  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
    Avant même d'essayer de lire, il faut que tu établisse une représentation interne pour tes données.

    La solution naïve consistant à avoir un tableau pour chaque nom est à éviter. Compte tenu du nombre élevé de nom possible, le programme deviendrait monstrueux.

    Peux-tu représenter les données dans un tableau de la forme :

    Tableau( Nom, DateHeure) = Nombre de véhicule

    Le nombre de Nom semble fini, environ 280 ? Le nombre d'heure ? 24*366 ?

    Fortran n'est pas très bien adapté à traiter nativement ce genre de problème. La solution la plus robuste est d'utiliser des listes liées, mais tu perds alors les avantages du Fortran (manipulation de tableau, ...).

    Si le nombre de Nom est limité et que le nombre de DateHeure est aussi fini, tu pourrais utiliser la stratégie suivante :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    program xxx
       implicit none
       integer Tableau(300,24*366)
       character (8) Item
       character (8) ListeDesNoms(300)
       integer NbrNoms = 0
       integer DateHeure
       integer NbrVehicule
       ...
       do
          read (...) Item, DateHeure, NbrVehicule
          if (fin des données) exit
          k = IndexNom(Item)
          Tableau(k,DateHeure) = NbrVehicule
    ...
    contains
       integer IndexNom(s)
          j = 1
          do while (j < NbrNoms)
             if (ListeDesNoms(j) == s) then
                IndexNom = j
                return
             endif
             j = j + 1
          enddo
          NbrNoms = NbrNoms + 1
          ListeDesNoms(NbrNoms) = s
          IndexNom = NbrNoms
          end function
    ...

  6. #6
    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
    Oups!

    Dans le contains, j'ai oublié de mettre le mot "function". La ligne :
    • integer IndexNom(s)

    devient donc :
    • integer function IndexNom(s)

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/12/2010, 22h04
  2. Ecrire & Lire des énumérés dans un fichier Texte
    Par WebPac dans le forum Langage
    Réponses: 8
    Dernier message: 18/06/2008, 10h04
  3. Réponses: 4
    Dernier message: 10/04/2008, 17h54
  4. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 12h01
  5. Lire un attribut dans un fichier XML en C++
    Par ti.k-nar dans le forum XML
    Réponses: 2
    Dernier message: 14/10/2002, 15h22

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