lo so che il fortran non è un linguaggio molto comune o meglio poco usato, ma spero che qualcuno posso aiutarmi con il mio problema.
In sintesi ho la seguente traccia dove richiede:
Sia dato una matrice A di interi positivi di dimensione nxn. Scrivere una funzione che restituisca true se e solo se nella matrice A: c’è almeno un numero pari in ogni riga.
Vi riporto i codici, in cui il primo senza subroutine, funziona, invece l'algoritmo call-subroutine non va.
Vi chiedo dove sto sbagliando, ci sono errori sulla testata ??
1.
- Codice:
program main
integer:: i,j,n,m,k,x
real:: a(100,100),f
logical:: v,w
v= .true.
w= .false.
print*, "ordine matrice"
read*, n,m
print*, "inserire elementnti"
do i=1,n
do j=1,m
read*, a(i,j)
end do
end do
p=2
k=0
do i=1,n
j=0
do
j=j+1
f=a(i,j)
if (mod(f,p)==0) then
x=1
else
x=0
end if
if (j==m .or. x==1) exit
end do
k=k+x
print*, "k" ,k
end do
if (k==n) then
print*, v
else
print*, w
end if
end
2
call
- Codice:
program main
integer:: i,j,n,m,t,ld
real:: b(100,100)
logical:: v,w
v=.true.
w=.false.
print*, "ordine matrice nxm"
read*, n,m
print*, "inserire elementi matrice"
do i=1,n
do j=1,m
read*, b(i,j)
end do
end do
call pari(b,100,100,t)
if (t==n) then
print*, v
else
print*, w
end if
end
subroutine
- Codice:
subroutine pari(b,ld,m,u)
integer:: i,j,n,m,ld,k,x,u
real:: b(ld,m),f
P=2
K=0
do i=1,n
j=0
do
j=j+1
f=b(i,j)
if (mod(f,p)==0) then
x=1
else
x=0
end if
if (j==m .or. x==1) exit
end do
k=k+x
end do
u=k
return
end
Cordiali saluti.