|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2008
Messaggi: 29
|
[Fortran 90] Programma con Subroutine
Buona sera a tutti. Sto lavorando in Fortran 90 (per l'università) e sto cercando di scrivere un programma che utilizzi una subroutine per il calcolo del prodotto tra una matrice a m righe e n colonne per un vettore a n righe.
Il problema è che il compilatore non mi da errori ma poi quando mando in esecuzione il programma mi fornisce dei risulatati che non mi tornano. Se invece scrivo il programma per intero senza subroutine, il risultato restituito è corretto. Il programma senza subroutine è questo: Codice:
program matrice_vettore
real::a(100,100),b(100),c(100)
integer::m,n,i,j
print*,"Inserire il numero delle righe e delle colonne della matrice"
read*,m,n
print*,"Inserire gli elementi della matrice"
do i=1,m
do j=1,n
read*,a(i,j)
enddo
enddo
print*,"Inserire gli elementi del vettore"
do i=1,n
read*,b(i)
enddo
do i=1,m
c(i)=0
do j=1,n
c(i)=c(i)+a(i,j)*b(j)
enddo
enddo
print*,"Il vettore risultato è"
do i=1,m
print*,c(i)
enddo
end
Con la subroutine invece mi viene così: Codice:
program matrice_vettore
real::a(100,100),b(100),c(100)
integer::m,n,i,j
print*,"Inserire il numero delle righe e delle colonne della matrice"
read*,m,n
print*,"Inserire gli elementi della matrice"
do i=1,m
do j=1,n
read*,a(i,j)
enddo
enddo
print*,"Inserire gli elementi del vettore"
do i=1,n
read*,b(i)
enddo
call mat_vet(m,n,a,b,c)
print*,"Il vettore risultato è"
do i=1,m
print*,c(i)
enddo
end
Codice:
subroutine mat_vet(m,n,a,b,c)
real::a(m,n),b(n),c(m)
integer::m,n,i,j
do i=1,m
c(i)=0
do j=1,n
c(i)=c(i)+a(i,j)*b(j)
enddo
enddo
end
Qualcuno saprebbe dirmi dove sbaglio nella subroutine? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:11.



















