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 :

éditer un fichier texte ou créer un nouveau fichier texte à partir d'éléments d'autres fichiers texte


Sujet :

Fortran

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut éditer un fichier texte ou créer un nouveau fichier texte à partir d'éléments d'autres fichiers texte
    Voila je débute en fortran et je dois dans le cadre de mon stage, formater certains fichiers afin qu'ils soient lus par un logiciel.

    Je possède un fichier rempli de donnée et je doit l'éditer, à la fois en modifiant la ligne de donnée et à la foi en insérant une nouvelle ligne d'information.

    Concrètement, Ce que je cherche a faire est ceci :

    203.21952 9.746597
    203.735461 9.706919
    203.251321 9.246798
    203.727119 9.258978

    que je doit convertir en ceci :

    Point 203.21952 9.746597
    Symbol (34,32768,24)
    Point 203.735461 9.706919
    Symbol (34,32768,24)
    Point 203.251321 9.246798
    Symbol (34,32768,24)
    Point 203.727119 9.258978
    Symbol (34,32768,24)

    Je voudrais savoir si cela est possible à faire sous fortran ou si je doit changer de programmeur.

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Points : 191
    Points
    191
    Par défaut
    Tu peux par exemple faire:

    PROGRAM Conversion

    INTEGER:: i, j, k, ios
    REAL(KIND=8),ALLOCATABLE,DIMENSION(:,: ):: TAB

    OPEN(11,FILE='Mon_Fichier.extansion',STATUS='old', ACTION='read', IOSTAT=ios)

    i=0
    ios=0
    DO
    READ(11,IOSTAT=ios)
    IF(ios/=0) EXIT
    i=i+1
    END DO

    REWIND(11)

    ALLOCATE(TAB(i,2))

    READ(11,*)TAB

    CLOSE(11)

    OPEN(11,FILE='FichierConvertit.extension')
    DO j=1,i
    WRITE(11,*) 'Point', TAB(j,: )
    WRITE(11,*) 'Symbol (34,32768,24) '
    END DO

    CLOSE(11)

    END PROGRAM

  3. #3
    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 ne dis pas si la ligne commençant par symbole est toujours la même. Marlan a supposé qui oui. De plus, rien ne dis si tu dois lire les nombres et les interpréter. En supposant que tu n'aies pas à les interpréter, la solution peut devenir très simple :
    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
     
    program Conversion
      implicit none  
      integer :: ios
      character (100) :: Point
     
      open(11,file='Mon_Fichier.extansion',STATUS='old', ACTION='read', IOSTAT=ios)
      open(12,file='FichierConvertit.extension')
     
      do
        read(11,'(a)',iostat=ios) Point
        if (ios /= 0) exit
        write(12,*) 'Point ',trim(Point)
        write(12,*) 'Symbol (34,32768,24) '
      enddo
    end program

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup de vos réponses

    Entre temps j'ai essayer de résoudre le problème et voila ce que j'ai fait :





    Program Nodes
    IMPLICIT NONE

    INTEGER ios
    REAL c1,c2
    REAL r1(6),r2(5)
    INTEGER i, n_value

    !J'ouvre le fichier qui contient mes données
    open(unit=20,file='nodes point.txt')

    ios = 0
    n_value=0

    !Dans un premier temps je vais lire l'ensemble de mon fichier de données
    do while (.true.)

    read(unit=20,fmt=*,iostat=ios) c1,c2
    if (ios .ne. 0) exit
    n_value = n_value + 1
    r1(n_value)=c1 !je veux stocker les différentes valeures de c1 et c2 dans les fonctions r1 et r2 respectivement
    r2(n_value)=c2
    enddo

    close(20)

    !J'ouvre un nouveau fichier dans lequel je vais pouvoir réintégrer mes données avec les ajouts de texte pour construire le format de texte voulu
    open(unit=10,file='editednode.txt')

    do i = 1, n_value

    write(10,'(A,F6.2,F5.2/,A)')'Point',r1(i),r2(i),' Symbol (34,32768,24)'

    enddo

    print*,n_value

    close(10)

    END




    Le problème c'est que lorsque j’exécute mon programme je tombe sur l'erreur :
    Error 11, Array subscript(s) out-of-bounds


    J'y ai passé toutes la journée et la je ne vois pas ou se trouve l'erreur théorique. Si vous avez une idée j'en serait très reconnaissant.

    A voir vos solution, j'ai l'impression d'avoir cherché trop compliqué...
    Merci beaucoup en tout cas je vais essayer ça de suite et vous dirais si ça fonctionne.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Vos deux programmes fonctionnent à merveille je suis très impressionné.
    Je vais décortiquer ça demain

    J'aimerais malgrès tout comprendre l'erreur de mon programme.


    Merci encore a vous

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 79
    Points : 89
    Points
    89
    Par défaut Array subscript(s) out-of-bounds
    Bonsoir,

    en fait le message t'indique que tu essaies d'accéder à une adresse d'un de tes tableaux qui n'existe pas. J'imagine que cela doit venir de tes tableaux r1 et r2. Peut-être lis-tu plus de 5 lignes dans ton fichier, n_value prend alors une valeur de 6 or r(2) n'a que 5 cases, ainsi accéder à la case r2(6) n'est pas possible.

    Pour éviter ce genre de problème, tu peux durant la phase de test/écriture de ton programme utiliser le flag type "-check bound" à la compilation, ceci t'éviteras ce genre de problèmes. Plus généralement, il ne faut pas hésiter à utiliser les diagnostics proposés par les compilateurs. Des exemples de flags sont présents ici http://www.polyhedron.com/pb05-linux-diagnose0html (en bas de page). Tu devrais ainsi avoir un bon aperçu des points qui peuvent poser problèmes dans ton code.

    En espérant avoir pu t'aider.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Oui c'était exactement ça, merci yogi du coup de main.

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/03/2015, 12h08
  2. créer un nouveau classeur a partir d'un userform
    Par sebastien-16600 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/03/2013, 22h48
  3. Réponses: 0
    Dernier message: 28/10/2008, 12h20
  4. Créer une variable d'environnement à partir d'une liste de fichier
    Par ddams dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/02/2007, 20h03
  5. [VBA]créer un nouveau dossier et y copier un fichier en auto
    Par Christophe93250 dans le forum Access
    Réponses: 3
    Dernier message: 03/01/2006, 14h15

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