Résultats de 1 à 4 sur 4

Sujet : Probléme de tableau

  1. #1
    Bonjour à toutes et à tous,

    Je viens de découvrir la programmation fortran et j\'ai un probleme de déclaration de tableau dans mon application. En effet, dans un premier temps j\'avais un tableau à une dimension et quant je suis passé à un tableau de 2 dimensions mon résultat n\'était plus le meme. Comment peut on déclater un tableau de plusieurs dimensions?

    ex : Tab(2,3, MAX) avec MAX = 100
    ou Tab(2,2,Nb) avec Nb fourni par la subroutine

    Merci par avance

  2. #2
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    personnellement en f77, je déclare simplement:
    integer*2 tablo(2,6,100)

    doubleprecision reel(22,5,200)

    Maintenant, il faudrait faire un exemple minimaliste et m\'expliquer ce qui ne marche pas:
    - la compilation ?
    - le link ?
    - l\'exécution ?
    moby

  3. #3
    Tout d\'abord je voulais vous remercier de l\'intéret que vous portez à mon probléme.

    Je vais vous éxpliquer en détail ce problème :

    Dans le programme principal j\'ai un common qui contient plusieurs variables ;

    Avant le probléme

    Le programme principal

    PARAMETER MAXBOB=99
    PARAMETER MAXESB=2*MAXBOB

    Common/DPESUP1/COURAN(MAXBOB),COTAB(2,MAXBOB),DIBOES(MAXESB),SPER MUT(MAXBOB,MAXVOI,MAXCOU)

    REAL COURAN,COTAB,DIBOES,SPERMUT

    Par ailleurs j\'ai des subroutines ou le parametre de DIBOES est donnée par la subroutine et donc déclarer de cette façon

    SUBROUTINE ECSTAT(LARG.....NBESBO...)

    DIBOES(NBESBO)



    Aprés le probleme : je passe en 2 dimensions de DIBOES

    PARAMETER MAXBOB=99
    PARAMETER MAXESB=2*MAXBOB

    Common/DPESUP1/COURAN(MAXBOB),COTAB(2,MAXBOB),DIBOES(2,MAXESB),SP ERMUT(MAXBOB,MAXVOI,MAXCOU)

    REAL COURAN,COTAB,DIBOES,SPERMUT

    Par ailleurs j\'ai des subroutines ou le parametre de DIBOES est donnée par la subroutine et donc déclarer de cette façon

    SUBROUTINE ECSTAT(LARG.....NBESBO...)

    DIBOES(2,NBESBO)

    Le résultat :

    Je trouve des résultats qui sont différents et la valeur de la variable juste aprés DIBOES donc SPERMUT a des valeurs différents que aupravant.

    Est que il faut que je déclare DIBOES(2,*) ou je garde le meme parametre par tout meme dans les subroutines qui donne elle meme ce parametre?

    Je vous remercie de votre aide et je reste à votre disposition pour d\'autre rensignements

  4. #4
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687

    Probléme de tableau

    Je ne comprends pas bien le problème, aussi j\'ai essayé dans les deux cas:
    1) tableau DIBO(200)
    2) tableau DIBO(5,200)
    Comme tu pourra le constater je n\'ai pas de problème:

    Code:
    1er cas avec une seule dimension du tableau DIBO
    
                PAGE   1
                06-15-104
                16:05:55
    
    Line#  Source Line     Microsoft Fortran PowerStation Compiler. Version 4.0
    
         1  $fixedformlinesize:72
         2  $integer:2
         3  $nostrict
         4  $pagesize:45
         5  c     -------------------------------------------------------------     6  c     Programm d\'essais                                     KESS.FOR
         7  c     -------------------------------------------------------------     8        program kess
         9        implicit integer*2 (a-z)
        10        common/dpe/ dibo(200)
        11  c     pour initialiser dibo
        12        do 100 i=1,200
        13    100 dibo(i)=201-i 
        14        write (*,*) dibo(5)
        15        call ecst(777,888,5)
        16        end
    
    MAIN  Local symbols
    DIBO. . . . . . . . . . . DPE(0)             INTEGER*2       400
    I . . . . . . . . . . . . dynam              INTEGER*2         2
    Global Symbols
    DPE . . . . . . . . . . . common             ***             400
    ECST@12 . . . . . . . . . extern             ***             ***
    F90_ENDWRITE. . . . . . . extern             INTEGER*0       ***
    F90_WRITE . . . . . . . . extern             INTEGER*0       ***
    LWRITE_I2 . . . . . . . . extern             INTEGER*0       ***
    MAIN. . . . . . . . . . . FUNCT              ***             ***
    
    No errors detected
            196
            777         888         196
    
    
     Line#  Source Line     Microsoft Fortran PowerStation Compiler. Version 4.0
         1  $fixedformlinesize:72
         2  $PAGESIZE:90
         3  $integer:2
         4  $nostrict
         5  c     -------------------------------------------------------------     6  c     S/P ECST.FOR
         7  c     -------------------------------------------------------------     8        subroutine ecst ( x , y , nbe )
         9        implicit integer*2 (c-z),character(a-b)
        10        common/dpe/ dibo(200)
        11        z=dibo(nbe)
        12        write (*,*) x,y,z
        13        return
        14        end
    
    ECST@12  Local symbols
    DIBO. . . . . . . . . . . DPE(0)             INTEGER*2       400
    NBE . . . . . . . . . . . param                                4
    X . . . . . . . . . . . . param                                4
    Y . . . . . . . . . . . . param                                4
    Z . . . . . . . . . . . . local              INTEGER*2         2
    Global Symbols
    Name                      Class              Type           Size
    DPE . . . . . . . . . . . common             ***             400
    ECST@12 . . . . . . . . . FUNCT              ***             ***
    F90_ENDWRITE. . . . . . . extern             INTEGER*0       ***
    F90_WRITE . . . . . . . . extern             INTEGER*0       ***
    LWRITE_I2 . . . . . . . . extern             INTEGER*0       ***
    
    No errors detected
    
    2ème cas vec 2 dimensions pour DIBO
    
                                  PAGE   1
                                  06-15-104
                                  16:11:34
    
    Line#  Source Line     Microsoft Fortran PowerStation Compiler. Version 4.0
    
         1  $fixedformlinesize:72
         2  $integer:2
         3  $nostrict
         4  $pagesize:45
         5  c     -------------------------------------------------------------     6  c     Programm d\'essais                                     KESS.FOR
         7  c     -------------------------------------------------------------     8        program kess
         9        implicit integer*2 (a-z)
        10        common/dpe/ dibo(5,200)
        11  c     pour initialiser dibo
        12        do 100 i=1,200
        13        do 100 j=1,5
        14    100 dibo(j,i)=201-i+j 
        15        write (*,*) dibo(3,5)
        16        call ecst(777,888,3,5)
        17        end
    
    MAIN  Local symbols
    DIBO. . . . . . . . . . . DPE(0)             INTEGER*2      2000
    I . . . . . . . . . . . . dynam              INTEGER*2         2
    J . . . . . . . . . . . . dynam              INTEGER*2         2
    Global Symbols
    DPE . . . . . . . . . . . common             ***            2000
    ECST@16 . . . . . . . . . extern             ***             ***
    F90_ENDWRITE. . . . . . . extern             INTEGER*0       ***
    F90_WRITE . . . . . . . . extern             INTEGER*0       ***
    LWRITE_I2 . . . . . . . . extern             INTEGER*0       ***
    MAIN. . . . . . . . . . . FUNCT              ***             ***
    
    No errors detected
            199
            777         888         199
    
                                                                            PAGE   1
                                                                           06-15-104
                                                                            16:11:31
    
         Line#  Source Line     Microsoft Fortran PowerStation Compiler. Version 4.0
    
         1  $fixedformlinesize:72
         2  $PAGESIZE:90
         3  $integer:2
         4  $nostrict
         5  c     -------------------------------------------------------------     6  c     S/P ECST.FOR
         7  c     -------------------------------------------------------------     8        subroutine ecst ( x , y ,lar, nbe )
         9        implicit integer*2 (c-z),character(a-b)
        10        common/dpe/ dibo(5,200)
        11        z=dibo(lar,nbe)
        12        write (*,*) x,y,z
        13        return
        14        end
    
    ECST@16  Local symbols
    DIBO. . . . . . . . . . . DPE(0)             INTEGER*2      2000
    LAR . . . . . . . . . . . param                                4
    NBE . . . . . . . . . . . param                                4
    X . . . . . . . . . . . . param                                4
    Y . . . . . . . . . . . . param                                4
    Z . . . . . . . . . . . . local              INTEGER*2         2
    Global Symbols
    DPE . . . . . . . . . . . common             ***            2000
    ECST@16 . . . . . . . . . FUNCT              ***             ***
    F90_ENDWRITE. . . . . . . extern             INTEGER*0       ***
    F90_WRITE . . . . . . . . extern             INTEGER*0       ***
    LWRITE_I2 . . . . . . . . extern             INTEGER*0       ***
    
    No errors detected
    moby

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé