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 :

Problèmematrice et do


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut Problèmematrice et do
    Bonsoir
    j'ai un problème avec do...
    voici le code
    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
     
    ! lecture des données
    DO I=NB,1,-1
    ! evaluation de N
    CALL CALC(Y,X,I,N,...)
        DO J=1,N
        WRITE(*,'(40X,F10.2,F10.4)') X(J),Y(I,J)
        END DO
    END DO
     
    ! LA PARTIE OU SE TROUVE LE PROBLEME 
    DO I=1,NB
        DO J=1,N
        WRITE(*,*) Y(I,J)
        END DO
    END DO
     
    END
     
    SUBROUTINE CALL(Y,X,I,N,...)
    DO J=N-1,1,-1
        .
     
        .
     
        .
     
        .
       Y(I,J)=Y1
    END DO
    return
    END

    Les valeurs qui s'affichent:
    -----Y(1,N)-------
    99.87
    99.91
    99.95
    99.99
    100.03
    100.07
    100.11
    100.15
    100.19
    100.23
    100.27
    -----------
    Les autres valeurs de la matrice prennent la valeur de Y(2,1)
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30
    53.30

  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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ! LA PARTIE OU SE TROUVE LE PROBLEME 
    DO J=1,NB
        DO J=1,N
        WRITE(*,*) Y(I,J)
        END DO
    END DO
    Utiliser deux fois le même indice dans des boucles imbriquées n'est jamais une bonne idée...

  3. #3
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    c'est d'ailleurs étonnant que le compilateur est autorisé ça!

  4. #4
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    non c'est juste une faute de frappe, dans le code j'ai mis ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ! LA PARTIE OU SE TROUVE LE PROBLEME 
    DO I=1,NB
        DO J=1,N
        WRITE(*,*) Y(I,J)
        END DO
    END DO

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Par défaut
    Bonjour,
    Différentes petites choses:
    1/ je suppose que ta subroutine s'appelle CALC et non call comme tu l'as définie...
    2/ return ne prend pas de e
    Mais je pense plus que tu as une erreur d'indexation dans ta subroutine (partie cachée)...

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    bon dans la subroutine CALC y a aucun problème, parce qu'elle me donne toutes les valeurs de la matrice Y(NB,N) dans la première boucle,une fois je sors de cette boucle et j'essaie de réafficher cette matrice je ne trouve que Y(1,N) sachant que NB=1 est la dernière valeur envoyer à CALC pour calculer Y(1,N)

  7. #7
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    dans ce cas, tu écrase la valeur de NB dans la première boucle et il ne t'affiche que la derniere calculer ensuite parce que tu as écrasé tous les autres... mais ton erreur n'est pas dans ce que tu as écris dans ce post...

    déjà comme tu as définit Y dans ta routine CALC? est-tu en F77 ou 90 (savoir si on peut simplifier ta syntaxe)? pkoi ne pas faire la double boucle directement dans calc?

  8. #8
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    je suis en F77
    enfaite mon but c pas d'afficher Y(NB,N) pour la 2eme fois mais je veut stocker cette matrice pour la réutiliser dans une autre subroutine pour faire d'autres calculs, NB est 1 constante évaluer avant de rentrer a la 1ere boucle

  9. #9
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    j'avais bien compris que tu ne cherchais pas juste à l'affiché sinon la première boucle était suffisante....

    mais j'en revien à ma question: si ta routine CALC considère son paramètre Y comme un vecteur, à chaque fois que tu l'appelle, il écrasera les précédentes valeurs et donc il ne te restera que la dernière valeur calculée
    d'où: comment sont déclarés les paramètre à l'intérieur de CALC?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problèmematrice et do
    Par brahim20 dans le forum Fortran
    Réponses: 0
    Dernier message: 30/06/2010, 04h03

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