|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
salut ,
j'ai écrit un programme qui fait le produit de deux matrices et enregistre la matrice résultante dans un fichier texte . Sauf que l'affichage n'est pas correcte , je veux un affichage de la matrice ligne par ligne et non pas tout les éléments dans la même ligne . voilà le code sous Fortran program produit_matrice integer :: i,j,k,n real,dimension(:,:),allocatable :: A,B,C print*,'entrez la dimension des matrices' read*,n allocate(A(n,n),B(n,n),C(n,n)) !--- saisie des matrices A et B --- ! print*,'entrez les elements de A ' do i=1,n do j=1,n read*,A(i,j) end do end do print*,'entrez les éléments de B ' do i=1,n do j=1,n read*,B(i,j) end do end do !--- calcul de la matrice C -----! do i=1,n do j=1,n C(i,j)=0 do k=1,n C(i,j)=C(i,j)+A(i,k)*B(k,j) end do end do end do do i=1,n print*,c(i,:) end do !--- saisie de la matrice C dans un fichier texte ---! open(15,file='matrix.txt',action='write',form='formatted',status='replace') write(15,*) C close(15) end program Bonne fin de soirée ! Et j'espère que quelqu'un pourrait me dire ce que je dois ajouter/modifier. ps : je me demande si l'option advance=Yes/No pourrait aider ,si oui ,comment l'utiliser? |
|
|
00
|
|
|
#2 | ||
|
Membre habitué
![]() Inscription : mai 2010 Messages : 111 ![]() |
Salut,
Ton problème vient directement du format que tu utilises lors de ton écriture. En effet, tu ne lui spécifies pas combien d'élément tu souhaite voir écrit sur une ligne. Si tu veux qu'il écrive correctement une ligne de la matrice, il faut lui spécifier combien d'éléments contient la ligne en question. Pour ce faire, tu peux par exemple recourir à la syntaxe suivante : Code :
Ton fichier sera alors comme tu l'auras souhaité. En espérant avoir répondu à ta question, Marlan |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
Salut, j'ai fait comme ce que t'as dit mais ,ca m'affiche une erreur lors de l’exécution au niveau de la ligne :
write(15,trim(adjustl(FMT)))C(i, |
|
|
00
|
|
|
#4 | ||
|
Membre habitué
![]() Inscription : mai 2010 Messages : 111 ![]() |
Effectivement, il y avait une erreur. Voici la version corrigée:
Code :
|
||
|
|
10
|
|
|
#5 | ||
|
Invité de passage
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
Waouw , ca marche à merveille !
Mais stp tu pourrai m'expliquer le rôle de chaque ligne ? Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre habitué
![]() Inscription : mai 2010 Messages : 111 ![]() |
Citation:
'(NTM[.O])' avec N : le nombre de colonne, T le type de format, M le nombre de caractères réservés à chaque donnée de tes colonnes et, en option (indiqué entre [ ]) le nombre de caractères réservés après le '.' si en format réel. Le format doit être indiqué avec une variable de type character En somme, ici avec cette écriture nous disons au code : Stockes dans une variable FMT de type caractère un : a : caractère (ici : une parenthèse ouverte ( ) i0 : entier (ici le nombre de colonnes de la matrice à écrire : size(C,dim=2)) a : caractère (ici on indique au code que le format sera de type réel : f) i0 : entier (ici le nombre de caractères à réserver à chaque donnée : 50 [mais on aurait pu mettre moins]) a : caractère (ici puisque l'on utilise des réels, il faut spécifier combien de décimale on souhaite avoir (d'où le . pour la séparation)) i0 : entier (le nombre de décimales que l'on souhaite avoir : ie : le nombre de caractères réservés aux décimales) a : caractère (parenthèse fermée ) ) En somme, si l'on imprimait FMT, l'on aurait : FMT=(NB_COLONNEf50.10) Ensuite vis à vis de la ligne : Citation:
Ecris dans l'unité de fichier 15, avec le format FMT la ligne courante de C Les fonction trim(adjustl(FMT)) signifient que l'on réajuste la variable FMT en retirant tous les blancs (car FMT est dans notre cas un character de 99 éléments dont on en utilise qu'une petite partie d'où le réajustement). La boucle d'écriture t'assureras quant à elle que les données sont bien écrites dans l'ordre désiré. |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
Merci , infiniment !
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com