Buongiorno a tutti, premetto che non so se è la sezione giusta per il mio problema, nel caso non lo fosse, spero mi perdonerete.
Ho un problema con Fortran90/95. Ho un esame di programmazione ed il linguaggio chiesto dal prof è proprio questo, ma andando a scaricare il compilatore consigliato dal prof e usando come esempio un codice fatto da lui, il compilatore mi da tantissimi errori. Ho provato diversi codici ma nessuno mai ha funzionato. Sapreste dirmi perchè? Il compilatore è un Force 2.0 ed un codice è
program SWAP_QUADR
implicit none
integer, parameter :: n=6, m=8
integer, dimension(n, m) :: mat
integer, allocatable, dimension(:,:) :: sez
integer k
integer :: i, j
integer :: stato
write(*,*) "immetti gli interi, riga per riga:"
do i=1, n
read(*,*) (mat(i, j), j=1, m)
end do
write(*,*) "indice di riga:"
do
read(*,*) i
if (i>1 .and. i<n) exit
write(*,*)"ripeti l'operazione:"
end do
write(*,*)"indice di colonna:"
do
read(*,*) j
if (j>1 .and. j<m) exit
write(*,*)"ripeti l'operazione:" end do
! calcolo la dimensione della sezione quadrata max
k=min(i-1, n-i, j-1, m-j)
! alloco lo spazio per la matrice temporanea necessaria
! per effettuare gli scambi
allocate(sez(k, k), STAT=stato)
IF (stato/=0) THEN
PRINT*, "Allocazione dell' array fallita!"
PRINT*, "Codice dell’errore: ", stato
STOP
END IF
! effettuo gli scambi
sez(:,:)=mat(i-k:i-1, j-k:j-1)
mat(i-k:i-1, j-k:j-1)=mat(i+1:i+k, j+1:j+k)
mat(i+1:i+k, j+1:j+k)=sez(:,:)
sez(:,:)=mat(i-k:i-1, j+1:j+k)
mat(i-k:i-1, j+1:j+k)=mat(i+1:i+k, j-k:j-1)
mat(i+1:i+k, j-k:j-1)=sez(:,:)
deallocate(sez)
do i=1, n
write(*, *) mat(i,:)
end do
end program
Spero possiate aiutarmi, grazie