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 :

Spirographe - écriture en ligne


Sujet :

Fortran

  1. #1
    Candidat au Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Spirographe - écriture en ligne
    Bonsoir
    Svp cela fait une semaine que j'ai ce problème en Fortran, je n'arrive pas à écrire les sorties sur une même ligne, il apparaît toujours des zéro.

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    program fl
        implicit none 
        real::r1,r2,d,theta,pi,a,N
        integer:: l ,j,i
        real,dimension(:), allocatable:: courbe 
        character(len=23):: Epitrochoid, Hypotrochoid,FMT,Nombres, des, points,erreurs,OK
        pi=4.d0*atan(1.d0)
        print*,'Epitrochoid=',1
        print*,'Hypotrochoid=',2
        write(*,*)"a="
        read(*,*) a           
     
     
        write(*,*)"l" ! nombre des fleurs
        read(*,*) l
     
     
        do j=1,l
            allocate(courbe(2*l)) 
            WRITE(fmt,'(i3.1)') 2*l
            fmt="("//trim(adjustl (fmt))//"ES13.3)" 
            !read(300,'(ES13.3)')fmt
     
            open(unit=300,file='structure.data',status='unknown',form='formatted')            
     
            !k=j-1
            write(*,*)"r1" !rayon de cercle fixe
            read(*,*)r1
            print*,'Nombres des points '
            write(*,*)"N"
            read(*,*)N
     
            write(*,*)"r2"
            read(*,*)r2
            write(*,*)"d" 
            read(*,*)d  
            if(r1.GT.r2) then !!!!!!!!!!! condition sur r1 et r2 il faut r1>r2
                print*,'OK'
            else 
                print*,'erreurs'
            end if    
     
            theta=0
            do i=0,N 
                theta=2*pi*r1*i/N
     
                if (a.EQ.1) then
                    courbe(2*j-1)=   x1(theta,r1,r2,d)
                    courbe(2*j)=y1(theta,r1,r2,d)
                    write(300,fmt) courbe 
                else            
                    courbe(2*j-1)=x2(theta,r1,r2,d) 
                    courbe(2*j)=y2(theta,r1,r2,d)   
                    !print*,'courbe=',courbe(:)                 
                    write(300,fmt) i,courbe
                end if
                ! if(courbe.NE.0) 
            end do
     
            deallocate(courbe)
        end do
     
        close(unit=300)
     
        contains
        !!!!!!!!!!!! Hypotrochoid!!!!!!!!!!!!!!!
     
        function x1(theta,r1,r2,d)
            implicit none
            real::x1
            real,intent(in):: theta,r1,r2,d
            x1=(r1-r2)*cos(theta)+d*cos((r1-r2)*theta/r2)
        end function
        function y1(theta,r1,r2,d)
            implicit none
            real::y1
            real,intent(in):: theta,r1,r2,d
            y1=(r1-r2)*sin(theta)-d*sin((r1-r2)*theta/r2)
        end function
        !!!!!!!!!!!!!!! Epitrochoid!!!!!!!!!!!!!!!!!!       
        function x2(theta,r1,r2,d)
            implicit none
            real::x2
            real,intent(in):: theta,r1,r2,d
            x2=(r1+r2)*cos(theta)-d*cos((r1+r2)*theta/r2)
        end function
        function y2(theta,r1,r2,d)
            implicit none
            real::y2
            real,intent(in):: theta,r1,r2,d
            y2=(r1+r2)*sin(theta)-d*sin((r1+r2)*theta/r2)
        end function
    end program fl

  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,

    Quelques bizarreries dans ton code qui pourraient expliquer qu'il ne fait pas ce que tu voudrais qu'il fasse:
    • N devrait être déclaré comme un entier puisque c'est une borne de boucle.
    • L'instruction "write(300,fmt) courbe" fait écrire l'intégralité du tableau "courbe", alors qu'à ce stade (à chaque itération i) n'a été rempli qu'une partie de ce tableau
    • L'instruction d'ouverture du fichier est à l'intérieur de la boucle sur j, donc à chaque nouvelle itération on écrase le fichier; est-ce bien ce que tu souhaitais faire?

  3. #3
    Candidat au Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonsoir
    merci de vote réponse, je veux que les points x,y de chaque spirographe écrite à la même ligne pas de zéro. Le problème que le programme écrire des zéro partout lorsque il écrire les (x,y) d'un seul spirographe

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/07/2010, 21h16
  2. écriture à la ligne boucle for + echo ?
    Par nekcorp dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 05/11/2008, 17h10
  3. Réponses: 5
    Dernier message: 10/08/2006, 12h54
  4. écriture en fin de ligne
    Par Mious dans le forum C
    Réponses: 3
    Dernier message: 07/10/2005, 14h10
  5. Passer à la ligne lors de l'écriture dans un fichier
    Par hams dans le forum Assembleur
    Réponses: 4
    Dernier message: 17/04/2005, 19h25

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