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 :

[Fortran 77] Création de fichier


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut [Fortran 77] Création de fichier
    Bonjour,

    J'utilise Fortran 77 et je rencontre le problème suivant :
    je calcule des valeurs d'une matrice a(i,j) avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    do j = 1, n sur j et puis sur i.
    do i = 1, n
    enddo
    enddo
    Je souhaite générer un fichier de sortie pour exploiter les résultats.
    Le format du fichier dont j'ai besoin est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    1               2           3              4           ....     J
    a(1,1)      a(1,2)     a(1,3)       a(1,4)      ....     a(1,J)
    a(2,1)      a(2,2)     a(2,3)       a(2,4)      ....     a(2,J)
      .              .            .              .                       .
      .              .            .              .                       .
    a(I,1)      a(I,2)       a(I,3)       a(I,4)       ....     a(I,J)
    Je vois 2 façons de faire ça :

    1- J'écris dans mon fichier la matrice avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    do i = 1, n
    write(10,*) (a(i,j), j=1, n)
    enddo
    Le problème c'est que chaque ligne n'apparait pas sur une ligne, mais sur plusieurs. En effet, après un certain nombre de caractères, le fichier passe automatiquement à la ligne. Donc il écrit chaque ligne sur x lignes et c'est inexploitable, je me retrouve alors avec I*x lignes, qui en plus ne sont pas toutes de la taille.

    2- A l'intérieur de la boucle sur j, je fais écrire sur une colonne toutes les valeurs de a(i,j) pour i =1, n. Puis j'incrémente j et je crée une nouvelle colonne dans laquelle j'écris a(i,j+1) etc... Problème : je ne sais pas faire ça.

    Je sais ouvrir un fichier, me placer sur la dernière ligne et lui faire écrire une nouvelle ligne, mais je ne sais pas lui dire de créer une nouvelle colonne.

    Voilà, toute suggestion est bienvenue, merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Le problème vient du fait que tu laisse le format libre pour l'écriture (write(10,*)).
    En spécifiant explicitement un format d'écriture, tu devrais pouvoir tout écrire sur une seule ligne. Tout celà a été dicuté là: https://www.developpez.net/forums/showthread.php?t=474919.

    Bonne continuation

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Merci de votre reponse. En effet, il semble que ce soit le format libre (*) qui cause cela.
    Cela dit, j'ai alors un autre probleme :

    Pour specifier un format d'écriture, il faut donner le format de chaque colonne. Mais si le nombre de colonnes est une variable, comment fait-on ?
    Concrètement, les J colonnes dépendent de la valeur J entrée par l'utilisateur.

    Merci

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    Si tu écris moins de valeurs que tu n'en as prévu dans ton format, ce n'est pas grave: le formet n'est simplement pas utilisé jusqu'au bout.

    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)

  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
    Si tu utilises un format explicite, tu n'as pas à passer par la technique de la variable caractère décrite dans l'autre discussion. La technique suggérée avait seulement pour but d'empêcher le changement de ligne généré par le format libre.

    Avec un format explicite, tu peux imprimer directement dans le fichier. Et comme le dit Jean-Marc, tu n'as qu'à simplifier un format prévoyant plus de valeurs qu'il n'en faut. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write(10,'(9999f8.6)') (a(i,j), j=1, n)
    Si tu utilise un vrai compilateur F77, alors l'exemple devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          WRITE(10,20) (A(I,J), J=1, N)
    20    FORMAT(9999F8.6)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    super merci beaucoup.
    Je ne sais pas comment faire pour dire que le probleme est resolu sur le forum.

    Merci encore

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

Discussions similaires

  1. création de fichiers dans le disque dur
    Par sex-sansbol dans le forum ASP
    Réponses: 6
    Dernier message: 24/08/2004, 09h39
  2. Création de fichiers CAB
    Par Polux63 dans le forum Windows
    Réponses: 5
    Dernier message: 22/08/2004, 10h50
  3. Création de fichier
    Par gsxr man dans le forum ASP
    Réponses: 2
    Dernier message: 28/06/2004, 22h19
  4. Réponses: 8
    Dernier message: 03/09/2003, 00h47
  5. création de fichiers .x
    Par Pazz dans le forum DirectX
    Réponses: 1
    Dernier message: 03/12/2002, 00h33

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