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 :

Comment lire les données sous une colonne et les écrire dans un table


Sujet :

Fortran

  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    0
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Rwanda

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 0
    Par défaut Comment lire les données sous une colonne et les écrire dans un table
    Bonjour chers tous,

    Je suis nous en programmation et j'utilise Fortran90. J'ai mon fichier de données sous une seule colonne comme suit: de 1 à 33 j'ai les valeurs de x ensuite les bloques de 33 valeurs de f(x) (chaque bloque de f(x) est indexé par 05 entiers relatifs sur une seule ligne). J'aimerais chaque lire les valeurs de x et n'importe f(x) et les écrire dans un table afin de tracer la courbe. J'ai essayé d'écrire un programme malheureusement il ne marche pas raison pour laquelle je sollicite votre aide.
    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
    implicit none
    character*(*),parameter::filename = 'expansioncoefs.dat'
    real(kind = 8),allocatable, dimension(:):: x
    real(kind = 8), allocatable, dimension(:):: y
    integer:: i,j,n 
    open(1, file='expansioncoefs.dat',status='unknown', action='read')  
    do i=1,n 
    if (n .le. 33) then
    read(1,*) x(i)
    endif
    !enddo
    !print*,x(i)
    enddo 
     
    do j=35,n
    if  (n .le. 67 )then
    !stop
    read(1,*) y(j)
    end if
    !print*,y(j)
    enddo
     close(1)
     allocate(x(0:n),y(0:n))
    open(2, file = 'interpolate1.dat',status='unknown', action = 'write') 
     
    do i=1,n
    do j=1,n
    !deallocate(x(0:n),y(0:n))
    write(*,*) x(i),y(j)
    !write(2,"(f10.3,1x,e25.14)") x(i), y(j) 
    enddo
    enddo
     close(2)
    !end
    end program table

        4.000
        4.250
        4.500
        4.750
        5.000
        5.250
        5.500
        5.750
        6.000
        6.250
        6.500
        6.750
        7.000
        7.250
        7.500
        7.750
        8.000
        8.250
        8.500
        8.750
        9.000
        9.250
        9.500
        9.750
       10.000
       10.250
       10.500
       10.750
       11.000
       11.250
       11.500
       11.750
       12.000
     0 0 0 0 0
         0.55977887068214E-01
         0.33301830925674E-01
         0.19357033058574E-01
         0.10851672673603E-01
         0.57601109719013E-02
         0.27793714306045E-02
         0.10812628240276E-02
         0.15097129824141E-03
        -0.32616649818477E-03
        -0.54065650568596E-03
        -0.60723892717492E-03
        -0.59463219747272E-03
        -0.54352144592126E-03
        -0.47743610751912E-03
        -0.40939905472145E-03
        -0.34605270924249E-03
        -0.29025099403574E-03
        -0.24269312486307E-03
        -0.20294374360102E-03
        -0.17005393420182E-03
        -0.14292238222802E-03
        -0.12048981961726E-03
        -0.10182978503448E-03
        -0.86178058019242E-04
        -0.72928575326720E-04
        -0.61613399268902E-04
        -0.51877242408502E-04
        -0.43452338487951E-04
        -0.36136444117556E-04
        -0.29774951350710E-04
        -0.24247094860570E-04
        -0.19455757052863E-04
        -0.15320203216670E-04
     0 0 1 0 1
        -0.36741232178207E-01
        -0.22980380651746E-01
        -0.14289660523504E-01
        -0.87248119186359E-02
        -0.52165015737020E-02
        -0.30442559592531E-02
        -0.17187672278215E-02
        -0.92034864768368E-03
        -0.44665388594640E-03
        -0.17180624691644E-03
        -0.18029835246793E-04
         0.62656319960734E-04
         0.99836676728874E-04
         0.11171390876218E-03
         0.10943210935956E-03
         0.99757700760475E-04
         0.86750134905736E-04
         0.72803446694530E-04
         0.59292387637833E-04
         0.46969693677009E-04
         0.36207932127320E-04
         0.27145815868709E-04
         0.19777037041139E-04
         0.14005279090632E-04
         0.96796384761379E-05
         0.66186600707396E-05
         0.46274884107037E-05
         0.35104872762797E-05
         0.30805231563062E-05
         0.31655489297527E-05
         0.36128958849786E-05
         0.42916155098686E-05
         0.50932078733324E-05
    Merci d'avance.

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour,

    Dans ce que tu donnes, "n" n'est jamais initialisé, donc toutes les boucles de ... à n doivent faire n'importe quoi.. J'imagine que "n" est sensé être la taille totale de ton fichier d'entrée? La taille de se fichier est connue à l'avance?

    Un conseil: ne lésine pas sur les options de "debug" de ton compilo pour identifier les problèmes de variables non initialisées et tableaux non alloués et dépassements d'indices de tableau, etc.

    Autre point plus méthodologique: si tu connais bien la taille des blocs à lire, alors il vaudrait mieux utiliser un paramètre "taille_bloc" que mettre en dur des valeurs comme 33, 67, ... dans ton code. D'autre part tu as ces lignes de 5 éléments dont il semble que tu ne te sers pas (en tout cas tu ne cherches pas à les lire), c'est normal?

Discussions similaires

  1. Comment renommer les fields dans un Table Report ?
    Par LP-mpascolo dans le forum Excel
    Réponses: 1
    Dernier message: 27/09/2007, 12h07
  2. Réponses: 3
    Dernier message: 12/07/2007, 19h10
  3. Réponses: 3
    Dernier message: 31/01/2007, 18h46
  4. Comment éviter les doublons dans ma table
    Par einegel dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/11/2004, 13h18

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