Aiuto con Fortran90/95

di il
6 risposte

Aiuto con Fortran90/95

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

6 Risposte

  • Re: Aiuto con Fortran90/95

    Non è che devi semplicemente rinominare il file sorgente mettendo l'estensione
    .f90
    ?
  • Re: Aiuto con Fortran90/95

    Ho provato a rinominarlo come mi hai detto, ora mi da un solo errore:
    C:\Users\Master\Documents\~Sorgente1.f90:26.32:

    write(*,*)"ripeti l'operazione:" end do
    1
    Error: Syntax error in WRITE statement at (1)
    C:\Users\Master\Documents\~Sorgente1.f90:57.3:

    end program
    1
    Error: Expecting END DO statement at (1)
    Error: Unexpected end of file in 'C:\Users\Master\Documents\~Sorgente1.f90'
    cosa potrebbe essere??
  • Re: Aiuto con Fortran90/95

    Leggi l'errore ... parla di un end do che non trova ... e infatti l'end do non è su una linea apposita ...
  • Re: Aiuto con Fortran90/95

    Su quale linea dovrei metterlo? Sto davvero iniziando da 0 con Fortran e non so dove mettere le mani...
  • Re: Aiuto con Fortran90/95

    Sulla linea successiva

    end do

    da solo

    Comunque non puoi pensare di programmare se non studi le istruzioni di base ...
  • Re: Aiuto con Fortran90/95

    Ora mi da come problema
    C:\Users\Master\AppData\Local\Temp\ccKgsjZ8.s:537: Error: unknown pseudo-op: `.secrel32'
    C:\Users\Master\AppData\Local\Temp\ccKgsjZ8.s:589: Error: unknown pseudo-op: `.secrel32'
    C:\Users\Master\AppData\Local\Temp\ccKgsjZ8.s:597: Error: unknown pseudo-op: `.secrel32'
    C:\Users\Master\AppData\Local\Temp\ccKgsjZ8.s:611: Error: unknown pseudo-op: `.secrel32'
    C:\Users\Master\AppData\Local\Temp\ccKgsjZ8.s:859: Error: unknown pseudo-op: `.secrel32'
    C:\Users\Master\AppData\Local\Temp\ccKgsjZ8.s:867: Error: unknown pseudo-op: `.secrel32'
    
Devi accedere o registrarti per scrivere nel forum
6 risposte