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 :

Ecrire deux colonnes


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 147
    Par défaut Ecrire deux colonnes
    Bonjour,

    Je lis un fichier dans lequel je trie des valeurs que je stocke dans un autre fichier.

    exemple :

    fichier source
    2 4
    1 3
    2 5
    . .
    . .

    mon tri : si une des valeurs >n alors remplace la par 1 dans le nouveau fichier sinon écrit là tel que dans le nouveau fichier.



    Mon problème : comment dans mon nouveau fichier écrire sous la forme de deux colonne ? comme le fichier source.

    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
     program env 
          implicit none
          double precision A,B,nrtri
          integer i
          character*12 titre
     
          titre = 'env.vel'
     
          open(109,file = titre, status='unknown', form ='formatted')
          open(1, file = 'Dat00210.vel',status='old',form='formatted')
          read(1,*),nrtri
     
          do i=1,nrtri
             read(1,*) A
             if ( A .gt.0.32d-1) then
                write(109,*) 1
             else
                write(109,*) A
             endif
          enddo  
     
          close(1)
          close(109)
          write(*,*),'Termine'
          end
    Merci.

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Par défaut
    Bonjour,
    ton problème vient du fait que tu ne lis qu'une valeur par ligne (A). La deuxième est ignorée... Si au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    do i=1,nrtri
             read(1,*) A
             if ( A .gt.0.32d-1) then
                write(109,*) 1
             else
                write(109,*) A
             endif
          enddo
    tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    do i=1,nrtri
             read(1,*) A,C
             if ( A .gt.0.32d-1) then
                write(109,*) 1,C
             else
                write(109,*) A,C
             endif
          enddo
    tu conserveras tes 2 colonnes et les valeurs correspondantes...

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 147
    Par défaut
    Bonjour doguette et merci pour ta réponse.

    Dans ton cas je ne vérifie que la 1r colonne, hors je veux aussi vérifier et changer la seconde avec le même test.

    j'ai essayé en faisant des cas avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       do i=1,nrtri
             read(1,*) A,B
             if ( A .gt.0.32d-1.and.B.gt.0.32d-1) then
                write(109,*) 1,1
             if ( (A .gt. 0.32d-1).and.(B.lt.0.32d-1)) then
                write(109,*) 1,B
             if ((A.lt.0.32d-1).and.(B.gt.0.32d-1)) then
                write(109,*) A,1
             if ((A.lt.0.32d-1).and.(B.lt.0.32d-1)) then
                write(109,*) A,B
             endif
          enddo
    Mais il passe pas la compile

    An ENDDO statement occurred without a corresponding DO or DO WHILE statement.
    enddo
    ^
    enveloppe.f(35): error #6321: An unterminated block exists.
    if ((A.lt.0.32d-1).and.(B.gt.0.32d-1)) then
    ^
    enveloppe.f(33): error #6321: An unterminated block exists.
    if ( (A .gt. 0.32d-1).and.(B.lt.0.32d-1)) then
    ^
    enveloppe.f(31): error #6321: An unterminated block exists.
    if ( A .gt.0.32d-1.and.B.gt.0.32d-1) then
    ^
    enveloppe.f(29): error #6321: An unterminated block exists.
    do i=1,nrtri

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 147
    Par défaut
    Re

    en fait j'ai trouvé plus simple et plus bête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     do i=1,nrtri
             read(1,*) A,B
             if ( A .gt.0.32d-4) then
                A=1
                if (B .gt.0.32d-1) then
                   B=1
                endif
             endif
             write(109,*), A,B
          enddo

  5. #5
    Membre expérimenté Avatar de Grame
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Par défaut
    en fait j'ai trouvé plus simple et plus bête :
    Tu peux encore faire plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    do i=1,nrtri
      read(1,*) A,B
      if (A .gt. 0.32d-4) A=1
      if (B .gt. 0.32d-1) B=1
      write(109,*), A,B
    enddo
    A part ça, c'est normal que ta borne de boucle (nrtri) soit un double précision
    alors que ta variable de boucle (i) est un entier ?

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 147
    Par défaut
    Citation Envoyé par Grame Voir le message
    Tu peux encore faire plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    do i=1,nrtri
      read(1,*) A,B
      if (A .gt. 0.32d-4) A=1
      if (B .gt. 0.32d-1) B=1
      write(109,*), A,B
    enddo
    A part ça, c'est normal que ta borne de boucle (nrtri) soit un double précision
    alors que ta variable de boucle (i) est un entier ?

    non en effet, j'ai corrigé ça.
    Merci.
    et merci aussi pour la simplification.


    j'en profite pour demander, comment on écrit en fortran, le non égale.
    par ex : si x "pas égale" à y
    où alors si x =p alors sortir du if tout de suite.

    est-ce que ça se fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     if (x=p) exit
    if..
    if..
     
    endif
    endif
    endif
    ?

Discussions similaires

  1. comment ecrire un article en deux colonnes
    Par homam dans le forum Mise en forme
    Réponses: 3
    Dernier message: 20/04/2009, 14h59
  2. Ecrire une équation sur deux colonnes
    Par evincent dans le forum Mathématiques - Sciences
    Réponses: 1
    Dernier message: 22/03/2007, 07h55
  3. [CR9] groupement en deux colonnes
    Par wargre dans le forum SAP Crystal Reports
    Réponses: 10
    Dernier message: 13/06/2006, 10h11
  4. zone de liste : affichage de deux colonnes
    Par niclalex dans le forum IHM
    Réponses: 3
    Dernier message: 27/10/2004, 22h51
  5. [CR] Faire un groupe sur deux colonnes, voir mon exemple
    Par Etienne51 dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 08/10/2004, 14h02

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