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 :

problème avec les formats -débutant-


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Par défaut problème avec les formats -débutant-
    Bonjour,
    Je dois écrire un code en fortran qui traite des données récupérées dans un fichier texte.
    Je suis débutant et ne sais pas vraiment me servir des formats.
    Mes données sont représentées comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    x1            y1           z1
    x2            y2           z3
    x3            y3           z3
    .              .            .
    .              .            .
    .              .            .
    Cependant certains xi, yi ou zi peuvent être des blancs (absence de donnée). Je ne peux donc pas utiliser l'instruction:

    read(étiquette_du_fichier,*) xi, yi, zi

    De plus les espace entre les colonnes x y et z est aléatoire.
    Le nombre de colonnes est fixe, la premiere numerote les lignes.

    Exemple typique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    1               6  23     8
    2  1               9      78
    3  15           8  16
    A partir de ceci, j'aimerais pouvoir récupérer 3 tableaux x, y, z et t, correspondant aux 4 colonnes, tels que:

    x(1)=b; x(2)=1; x(3)=15

    y(1)=6; y(2)=b; y(3)=8

    z(1)=23; z(2)=9; z(3)=16

    t(1)=8; t(2)=78; t(4)=b

    b étant un sentinelle quelconque signifiant l'absence de valeur.

    Quelqu'un connaîtrait-il une solution?

    Merci d'avance.

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    alors... si les valeurs sont rangée n'importe comment, comment fait-tu pour savoir qui est le banc dans l'histoire??? je veux dire:
    on peux voir ces lignes comme:
    x1=0 y1=b z1=8
    x2=b y2=0 z2=8
    mais aussi:
    x1=0 y1=8 z1=b
    x2=0 y2=8 z2=b
    ....
    après, pour ces deux lignes, un 'read(X,*)x,y fonctionne parfaitement... il se fout de savoir où sont les blanc.....

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Par défaut
    En fait je me suis trompe le nombre de colonnes est fixe.
    Aucune colonne n'est vide.
    La premiere colonne numerote les lignes.

  4. #4
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    si tu fais du fortran90:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    open(unit=15,file="data.dat",status="old",iostat=ios)
      do while(ios==0)
        read(15,*)i,x(i),y(i),z(i)
      end do
    close(15)
    devrais faire la blague!
    il te faut déclarer: deux entier (i et ios) et trois tableaux assez grand...

    pour trouver dynamiquement la taille des tableaux:

    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
     
    integer i,ios
    real(kind=8),dimension(:),allocatable x,y,z
    !
    open(unit=15,file="data.dat",status="old",iostat=ios)
      do while(ios==0)
        read(15,*)i
      end do
      allocate(x(i),y(i),z(i))
      rewind(15)
      do while(ios==0)
        read(15,*)i,x(i),y(i),z(i)
      end do
    close(15)
    !
    ..... traitement de tes valeurs.....
    !
    deallocate(x,y,z)
    en fait, vu que tes collonne ne sont pas bien rangée, il ne faut pas utiliser les format qui sont fixe mais plutôt le '*' qui sera variable!!

Discussions similaires

  1. Problème avec les Formats de Date
    Par sebac dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/01/2008, 16h30
  2. [débutant] problème avec les arguments de fopen
    Par Anouschka dans le forum C++
    Réponses: 13
    Dernier message: 23/02/2006, 15h56
  3. [Débutant] Problème avec les paramètres d'une proc stockée
    Par babulior dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/06/2005, 16h38
  4. [Débutant]Problème avec les timers
    Par mickael777 dans le forum MFC
    Réponses: 1
    Dernier message: 11/04/2005, 12h00
  5. [Débutant][Phppgadmin] problème avec les types
    Par PoY dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/08/2004, 18h06

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