Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[Fortran] Non esegue i compilati

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[Fortran] Non esegue i compilati

Messaggioda Pole » mar lug 25, 2006 9:41 am

Ciao!

sono riuscito a risolvere un esercizio in c (in questo linguaggio è perfettamente funzionante), ma ora che provo a convertirlo in fortran riscontro un problemino insolito: tento di compilare il sorgente, e dopo aver corretto eventuali errori, l'eseguibil parte e si richiude senza chiedermi niente. Non riesco a capire perché mi faccia questo scherzo...

Il codice sorgente è il seguente ed è stato compilato con fortran g95.

! --------------------------------------------------
PROGRAM SENO
! --------------------------------------------------

IMPLICIT NONE
INTEGER, PARAMETER :: k=selected_real_kind(10)
REAL(kind=k),EXTERNAL :: Calcola
REAL(kind=k) :: punto
PRINT *, "Inserisci il punto: "
READ *, punto
PRINT *, "serie: ",Calcola(punto)
END PROGRAM

! --------------------------------------------------
FUNCTION Somma(n,punto) RESULT (output_8)
! --------------------------------------------------

IMPLICIT NONE
INTEGER, PARAMETER :: k=selected_real_kind(10)
REAL(kind=k) :: output_8
INTEGER :: n
REAL(kind=k) :: punto
REAL(kind=k),EXTERNAL :: Serie
INTEGER :: i
REAL(kind=k) :: risultato=0
DO i = 1,(n+1)-1
risultato = risultato+Serie(i,punto)
END DO
output_8 = risultato
RETURN
END FUNCTION

! --------------------------------------------------
FUNCTION Calcola(punto) RESULT (output_8)
! --------------------------------------------------

IMPLICIT NONE
INTEGER, PARAMETER :: k=selected_real_kind(10)
REAL(kind=k) :: output_8
REAL(kind=k) :: punto
REAL(kind=k),PARAMETER :: costante=0.0000000005
REAL(kind=k),EXTERNAL :: Somma
INTEGER :: n=1
DO WHILE ( Abs(Somma(n,punto) - Somma(n+1,punto)) > costante )
PRINT *, "Somma fino a termine ",n,": ",Somma(n,punto)
PRINT *, "Somma fino a termine ",n+1,": ",Somma(n+1,punto)
PRINT *, "Differenza: ",abs(Somma(n,punto) - Somma(n+1,punto))
n = n+1
PRINT *, n
END DO
output_8 = Somma(n+1,punto)
RETURN
END FUNCTION

! --------------------------------------------------
FUNCTION Serie(n,punto) RESULT (output_8)
! --------------------------------------------------

IMPLICIT NONE
INTEGER, PARAMETER :: k=selected_real_kind(10)
REAL(kind=k) :: output_8
INTEGER :: n
REAL(kind=k) :: punto
REAL(kind=k),PARAMETER :: menouno=-1.0
REAL(kind=k),EXTERNAL :: Fattoriale
REAL(kind=k) :: risultato
risultato = ( menouno**(n-1) ) * ( punto**((2*n)-1) ) / Fattoriale( 2*n-1 )
output_8 = risultato
RETURN
END FUNCTION

! --------------------------------------------------
FUNCTION Fattoriale(numero) RESULT (output_8)
! --------------------------------------------------

IMPLICIT NONE
INTEGER, PARAMETER :: k=selected_real_kind(10)
REAL(kind=k) :: output_8
INTEGER :: numero
INTEGER :: i
REAL(kind=k) :: somma
somma = 1
DO i = 1,(numero+1)-1
somma = i*somma
END DO
output_8 = somma
RETURN
END FUNCTION

Se qualcuno può spiegarmi dove sbaglio mi farebbe davvero un piacere!
Grazie Mille!

Pole
Avatar utente
Pole
Neo Iscritto
Neo Iscritto
 
Messaggi: 1
Iscritto il: mar lug 25, 2006 9:36 am

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising