Saut de ligne dans "write" sous fortran !

Résolu/Fermé
younexpro Messages postés 32 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 26 octobre 2016 - 13 déc. 2012 à 00:07
younexpro Messages postés 32 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 26 octobre 2016 - 13 déc. 2012 à 14:38
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?

3 réponses

Bonjour,

Tu dois ecrire ta matrice dans une double boucle

!--- saisie de la matrice C dans un fichier texte ---!
open(15,file='matrix.txt',action='write',form='formatted',status='replace')
do i=1,n
do j=1,n
WRITE(15, 100, ADVANCE='NO') C(i,j)
100 FORMAT (I5)
end do
WRITE(15, *) ' '
end do
close(15)

A+
0
younexpro Messages postés 32 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 26 octobre 2016
Modifié par younexpro le 13/12/2012 à 10:34
Salut ca affiche une erreur au niveau de la ligne ou t'as défini 100 le format !
Du coup non c'est pas résolu , merci quand même !
0
Alors essaye avec cette syntaxe

WRITE(15, '(I5)', ADVANCE='NO') C(i,j)

Supprime la ligne 100
0
younexpro Messages postés 32 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 26 octobre 2016
13 déc. 2012 à 14:38
Voilà donc la solution que j'ai trouvé à la fin
Je rappelle que l'objectif est réaliser un code fortran qui fait le produit de deux matrices et enregistre la matrice résultante dans un fichier texte !

program produit_matrice
integer :: i,j,k,n
real,dimension(:,:),allocatable :: A,B,C
CHARACTER(99) :: FMT
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(FMT,'(a,i0,a,i0,a,i0,a)')'(',size(C,dim=2),'f',50,'.',10,')'
do i=1,n
write(15,trim(adjustl(FMT)))C(i,:)
end do
end program


Bonne fin de journée !
0