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 :

Affichage des matrices


Sujet :

Fortran

  1. #1
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut Affichage des matrices
    Bonjour je veux afficher une matrice de taille 7x5, tel qure a(i,j)=(i*j)/(i+j)
    j ai fait ca par deux methodes, mais j ai eu des valeurs differentes, alors ou est le truc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            program mati
           real A(7,5)
           integer i,j
           do i=1,7
              do j=1,5
                 A(i,j)=real(i*j)/real(i+j)
              enddo
           enddo
    c       print 20, ((A(i,j),i=1,7),j=1,5)
    c20    format('A=',7(/,1X,5(F12.6,1X)))
           do i=1,7
            write(*,fmt='(5f12.6)') (A(i,j) , j=1,5)
           enddo
           end
    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 72
    Points : 88
    Points
    88
    Par défaut
    A première vue, je pense que ca vient des formats de nombres que tu utilises : Dans le premier cas, tu enregistres des réels dans une matrice de réels, pas de problèmes.

    Dans le deuxième cas, tu affiches des lignes dont le format est '5f12.6'
    Je ne connais pas le format 'f'
    Pour moi il existe :
    in (entier, sur n caractères)
    en.m (réel, sur n caractères, avec m chiffres significatifs)
    an (chaîne de caractères, sur n caractères)
    * pour laisser choisir le compilateur selon ce que tu calcules (pas toujours terrible)


    [Edit] après une recherche, j'ai trouvé le f :
    fn.m (réel, sur n caractères, avec m chiffres après la virgule)

  3. #3
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    A priori, le format 5F12.6 est correct. En revanche, il n'est pas étonnant que tu obtiennes des résultats différents: dans un cas, la boucle sur i est à l'extérieur de celle sur j, et dans l'autre c'est l'inverse.

    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 72
    Points : 88
    Points
    88
    Par défaut
    Effectivement, en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
          program mati
          real A(7,5)
          integer i,j
          do i=1,7
             do j=1,5
                A(i,j)=real(i*j)/real(i+j)
             enddo
          enddo
          print 20, ((A(i,j),j=1,5),i=1,7)
    20    format('A=',7(/,1X,5(F12.6,1X)))
          do i=1,7
           write(*,fmt='(5f12.6)') (A(i,j) , j=1,5)
          enddo
          end
    Ca marche... J'ai pas bien compris pourquoi mais bon

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2006
    Messages : 197
    Points : 185
    Points
    185
    Par défaut
    En écrivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print 20, ((A(i,j),j=1,5),i=1,7)
    tu va écrire avec le format 20 ce qui ce trouve dans les parenthèse.
    Dans les parenthèses, tu as (A(i,j),j=1,5),i=1,7
    tu va donc écrire, pour i=1 à 7, ce qui se trouve dans les parenthèses.
    Dans cette dernière, tu va écrire, pour j=1à5, la composante i,j de la matrice.

    En résumé, ce que tu as écrit veut dire que tu boucle d'abord sur i, puis en suite sur j

    Tu affiche donc:
    A11 A12 A13 A14 A15
    A21 A22 A23 ...........
    ............................
    ....................... A75


    En inversant les i et j dans les parenthèses, tu affichera la chose suivante :
    A11 A21 A31 A41 A51
    A61 A71 A12 A22 A32
    etc...

  6. #6
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut
    d accord, c est compris merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/12/2012, 05h40
  2. Réponses: 3
    Dernier message: 19/10/2012, 11h21
  3. Réponses: 1
    Dernier message: 06/03/2003, 11h57
  4. Forcer l'affichage des dizaines...
    Par pataluc dans le forum Langage
    Réponses: 4
    Dernier message: 26/11/2002, 19h38
  5. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00

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