|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2006
Città: Legnano (MI)
Messaggi: 119
|
[fortran] problema con programma semplice
ciao a tutti, ho un piccolo problema con questo programma. Il compilatore mi da zero errori e zero warning ma quando vado a eseguire l'exe mi da errore.
Non sono esperto di programmazione ma per questi piccoli programmi me la cavo, solo che proprio non riesco a risolvere questa volta. Grazie a chiunque possa aiutarmi! Ultima modifica di agm84 : 28-01-2009 alle 17:44. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Mar 2006
Città: Legnano (MI)
Messaggi: 119
|
se può essere utile io uso compaq visual fortran
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2006
Città: Legnano (MI)
Messaggi: 119
|
help
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Mar 2006
Città: Legnano (MI)
Messaggi: 119
|
re-help
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ciao, qualche consiglio se vuoi aumentare le tue possibilità di ricevere risposta:
1) invece dell'allegato, posta direttamente il codice, usando gli appositi tag "CODE" per non perdere l'identazione. 2) spiega più in dettaglio cosa va storto e secondo te dove può essere l'errore. Qualcono che conosce fortran passerà e ti darà una mano, io purtroppo non conosco questo linguaggio.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Mar 2006
Città: Legnano (MI)
Messaggi: 119
|
grazie per i consigli!
Il problema secondo me sta nelle funzioni WRITE, FORMAT e READ perchè quando apro l'exe non mi chiede di inserire i valori come dovrebbe. Questo è il codice Codice:
REAL RAPX21,LREALE,ANCONT,DANCON,SCARTO,LCALC,DIFFL,DIFFLL,PRODL
REAL EPSIL
LOGICAL MAXTER
WRITE(5,1000)
1000 FORMAT('DAMMI RAPX21 E LREALE RAPPORTATI AL RAGGIO DEL FILO')
READ(5,*) RAPX21, LREALE
WRITE(5,1001)
1001 FORMAT('DEFINISCI EPSIL')
READ(5,*) EPSIL
SCARTO=0.00001
MAXTER=.FALSE.
ANCONT=ACOS(0.)
DANCON=ANCONT/25
CALL LUNCAL(EPSIL,RAPX21,ANCONT,LCALC,MAXTER)
IF (MAXTER) GOTO 80
DIFFL=LREALE-LCALC
WRITE(5,1004)LCALC
1004 FORMAT('LCALC=',G10.5)
DIFFLL=DIFFL
IF((DIFFL**2).LT.SCARTO) GOTO 90
10 CONTINUE
ANCONT=ANCONT-DANCON
CALL LUNCAL(EPSIL,RAPX21,ANCONT,LCALC,MAXTER)
IF (MAXTER) GOTO 80
DIFFL=LREALE-LCALC
WRITE(5,1004)LCALC
IF((DIFFL**2).LT.SCARTO) GOTO 90
PRODL=DIFFL*DIFFLL
IF(PRODL.GT.0) GOTO 10
ANCONT=ANCONT+DANCON
WRITE(5,1003)ANCONT
DANCON=DANCON/2
GOTO 10
80 CONTINUE
WRITE(5,1002)
1002 FORMAT('SUPERATO MAX NUMERO DI TERMINI')
90 CONTINUE
WRITE(5,1003) ANCONT
1003 FORMAT('ANGOLO DI CONTATTO (RAD)=',G10.5)
ACONGR=(90.*ANCONT)/ACOS(0.)
WRITE(5,1005) ACONGR
1005 FORMAT('ANGOLO DI CONTATTO (GRADI)=',G10.5)
STOP
END
SUBROUTINE LUNCAL(EPSIL,X2SUX1,ANGCON,LUNG,MAXNUM)
REAL X2SUX1,ANGCON,LUNG,LUNG1,LUNG2,ALPHA,SERBI,EPSIL
REAL LLUNG,A,K2,ANGX1,INTEGR,DL
LOGICAL MAXNUM
M=500
A=((X2SUX1*COS(ANGCON))-1)/(X2SUX1-COS(ANGCON))
K2=((X2SUX1**2)-(A**2))/(X2SUX1**2)
ANGX1=ASIN((((X2SUX1**2)-1)/(K2*(X2SUX1**2)))**0.5)
LUNG=2*((A+X2SUX1)*ANGX1)
LLUNG=0.
DO 20 I=1,M
ALPHA=0.-0.5
CALL SERBIN(I,ALPHA,SERBI)
LUNG1=A*SERBI
ALPHA=0.5
CALL SERBIN(I,ALPHA,SERBI)
LUNG2=X2SUX1*SERBI
CALL INT(ANGX1,I,INTEGR)
LUNG=LUNG+(2*((LUNG1+LUNG2)*((-1)**I)*(K2**I)*INTEGR))
DL=(LLUNG-LUNG)**2
IF(DL.LT.EPSIL) GOTO 30
LLUNG=LUNG
20 CONTINUE
MAXNUM=.TRUE.
30 CONTINUE
RETURN
END
SUBROUTINE INT(FIX1,N1,INTE)
REAL INTE,INTO,INT1,FIX1
INTO=FIX1
DO 40 K=1,N1
INT1=-((COS(FIX1)*((SIN(FIX1))**((2*K)-1)))/(2*k))+
1 ((((2*K)-1)*INTO)/(2*K))
INTO=INT1
40 CONTINUE
INTE=INT1
RETURN
END
SUBROUTINE SERBIN(N2,ALFA,SERB)
REAL ALFA,SERB
SERB=1
DO 50 L=1,N2
SERB=SERB*((ALFA-L+1)/L)
50 CONTINUE
RETURN
END
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 157
|
la unita' 5 non corrisponde ad alcun file per quello che si ferma.
devi usare qualcosa del tipo open(unit=5,file = "nomefile.txt",form='formatted',status='replace') Devi impararti un po' di I\O con Fortran, inizia sostituendo il 5 con *. cosi' a me sembra funzionare >prog.exe DAMMI RAPX21 E LREALE RAPPORTATI AL RAGGIO DEL FILO .5 .9 DEFINISCI EPSIL .01 SUPERATO MAX NUMERO DI TERMINI ANGOLO DI CONTATTO (RAD)=1.5708 ANGOLO DI CONTATTO (GRADI)=90.000 tiMo
__________________
The plural of anecdote is not data. ~ Roger Brinner |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Mar 2006
Città: Legnano (MI)
Messaggi: 119
|
grazie mille, questa non la sapevo. Lo sto studiando un po' da autodidatta...ma i risultati son questi per ora.
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jan 2005
Messaggi: 157
|
l'asterisco indica input o output da schermo.
In ogni caso mi sembra chiaro che questo programma non l'hai scritto tu visto che e' scritto in F77 e usa strutture che ormai sono obsolete. Se l'hai scritto tu hai sbagliato tutto, ti consiglio di studiarti il Fortran 90/95/2003 ciao tiMo
__________________
The plural of anecdote is not data. ~ Roger Brinner |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Mar 2006
Città: Legnano (MI)
Messaggi: 119
|
io l'ho solo aggiustato per le mie esigenze, non sono un programmatore. Non riuscivo a capire dove stava l'errore, tutto qua.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:01.



















