Primalita' In Fortran 95
Ragazzi Ho provato a realizzare in Fortran una funzione esterna alla main che dato un vettore di interi mi restituisce True se il numero di primi e' maggiore di 5 False Altrimenti
Il Codice che ho scritto e' il seguente:
Tuttavia mi genera un errore alla riga seguente
l'errore e': Attempt to call a subroutine as if it were an integer(kind=3) function
Un Aiutino?
Il Codice che ho scritto e' il seguente:
logical function prime(M,dim) result(p) integer,intent(in) :: dim integer,dimension(100),intent(in) :: M integer :: i,j,k logical :: primo i=1 j=0 do i =1,dim primo =.false. if(M(i) .ge. 2) then primo =.true. k=2 do while(k .lt. M(i) .and. primo) primo = M(i)-(M(i)/k) * k .ne. 0 k=k+1 end do end if if(primo)then j=j+1 end if end do p = j .gt. 5 end function program Prime_Vector Integer, dimension(100) :: C integer :: n,i write(*,*) "inserisci dimensione vettore" read(*,*) n if(n .gt. 0 .and. n. le. 100) then do i=1,n read(*,*) C(i) end do write(*,*) prime(C,n) end if end program
Tuttavia mi genera un errore alla riga seguente
write(*,*) prime(C,n)
l'errore e': Attempt to call a subroutine as if it were an integer(kind=3) function
Un Aiutino?
Risposte
Ragazzi Mea Culpa ^^
non ho dichiarato nel program il tipo della funzione
inserendo infatti Logical, External :: prime
tutto torna ^^
E poiche' non avevo inserito IMPLICIT NONE il compilatore non mi ha restituito errore ed ha assegnato alla funzione il tipo di default ovvero REAL ^^
non ho dichiarato nel program il tipo della funzione

inserendo infatti Logical, External :: prime
tutto torna ^^
E poiche' non avevo inserito IMPLICIT NONE il compilatore non mi ha restituito errore ed ha assegnato alla funzione il tipo di default ovvero REAL ^^