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 :

subscript out of range


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Par défaut subscript out of range
    Bonjour a tous,
    Je travaille sous Linux et lorsque j'execute mon code il est ecrit
    "Subscript 51 is out of range for dimension 1 for array RNGCAZ with bounds 1:50; file : prog.for line 41"

    voila mon programme :

    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
    IMPLICIT NONE
     
     
    	INCLUDE 'Param'
     
    C
          INTEGER NRNG,NAZ    
    C      REAL    PCR(0:4000)
          REAL, DIMENSION ( : , : ), ALLOCATABLE :: PCRMOY
          REAL, DIMENSION ( : ), ALLOCATABLE :: RNGCAZ
          REAL, DIMENSION ( : ), ALLOCATABLE :: RNGCUM
          REAL, DIMENSION ( : ), ALLOCATABLE :: PCR
     
    c      REAL    RNGCUM(0:4000),PCRMOY(0:4000,50)
    C      REAL    RNGCAZ(50)
          INTEGER IRNG,IAZ               
          REAL    RNG,X1,X2,Y1,Y2,DIST,PCUM        
          INTEGER MPB_PDC
     
    C
          ENTRY CUMPRX(NAZ,NRNG,PCUM,MPB_PDC)
     
           allocate(PCRMOY(0:4000,50))   
    	allocate(PCR(0:4000))
    	allocate(RNGCUM(0:4000))
    	allocate(RNGCAZ(50))	
     
          DO 20, IAZ = 1,NAZ           
           IF (PCUM.LE.PCRMOY(1,IAZ)) THEN 
            IF (IAZ.EQ.NAZ)
     
         +   PRINT*,' DISTANCES CALCULEES TROP PETITES (PDCUM =',PCUM,')'
     
            RNGCAZ(IAZ) = RNGCUM(1)   : l'erreur se produit sur cette ligne
           ELSE
            IF (MPB_PDC.EQ.0) THEN
              IF (PCUM.GE.PCRMOY(NRNG,IAZ)) THEN 
                IF (IAZ.EQ.NAZ)
     
         +   PRINT*,' DISTANCES CALCULEES TROP GRANDES (PDCUM =',PCUM,')'
                RNGCAZ(IAZ) = -1.
              ELSE         
                DO 10, IRNG = 0,NRNG
                  IF ( (PCUM.GT.PCRMOY(IRNG,IAZ)).AND.
         +         (PCUM.LT.PCRMOY(IRNG+1,IAZ)) ) THEN 
                    X1 = RNGCUM(IRNG)
                    X2 = RNGCUM(IRNG+1)
                    Y1 = PCRMOY(IRNG,IAZ)   
                    Y2 = PCRMOY(IRNG+1,IAZ)         
                    RNGCAZ(IAZ) = (X2-X1)/(Y2-Y1)*(PCUM-Y1)+X1     
                  END IF    
    10          CONTINUE    
              END IF 
            ELSE 
              DO 15, IRNG = 0,NRNG
                IF (PCUM.LE.PCRMOY(IRNG,IAZ)) THEN
                  RNGCAZ(IAZ) = RNGCUM(IRNG)
                  GO TO 16
                ELSE IF (IRNG.EQ.NRNG) THEN
                  IF (IAZ.EQ.NAZ)
     
         +	PRINT*,' DISTANCES CALCULEES TROP GRANDES (PDCUM =',PCUM,')'
                  RNGCAZ(IAZ) = -1.
                END IF    
    15        CONTINUE
    ...
    Pouvez vous me m'aider s'il vous plaît. j'ai cru qu en passant les tableaux dynamiquement cela résoudrait mon probleme mais sa ne change rien.merci beaucoup pour l'aide que vous pourrez m apporter.

  2. #2
    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
    Par défaut
    Le message d'erreur est assez explicite : il dit que le programme tente d'accéder à l'élément 51 du tableau RNGCAZ alors que le tableau est dimensionné 1 à 50.

    Ton code est d'ailleurs discutable : les tableaux sont dimensionnés à 50, le traitement va de l'élément 1 à NAZ et il ne semble pas y avoir de lien entre NAZ et 50 (genre if (NAZ > 50) il y a un problème...).

    Dernier commentaire, plutôt éditorial : Tu devrais éviter d'utiliser ENTRY. Il y a des solutions alternatives en Fortran 90 (modules, sous-programmes « contains », ...). ENTRY a très mauvaise réputation...

Discussions similaires

  1. 'subscript out of range'
    Par NulenVBA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/10/2008, 10h03
  2. vector subscript out of range: qu'est-ce ?
    Par sa.mh dans le forum C++
    Réponses: 15
    Dernier message: 22/05/2008, 16h47
  3. Réponses: 1
    Dernier message: 23/04/2008, 10h37
  4. vector subscript out of range
    Par nightwar dans le forum SL & STL
    Réponses: 2
    Dernier message: 14/03/2008, 18h35
  5. error9 subscript out of range
    Par tomy7 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/03/2008, 12h25

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