|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2001
Città: Treviso
Messaggi: 1158
|
una mano per il fortran 77
chi mi da una mano a convertire questo programma in fortran 90 a fortran 77?
Program gittata !Programma per il calcolo della distanza percorsa da un proiettile !sparato con una velocit iniziale ed un angolo theta rispetto al suolo. IMPLICIT NONE ! Dichiarazione dei parametri REAL, PARAMETER :: gradi_rad = 0.01745329 ! Da gradi a rad ! Dichiara le variabili REAL :: gravity = -9.81 ! Accelerazione di gravità (m/s*s) INTEGER :: max_degrees ! Angolo di massima gittata (gradi) REAL :: max_range ! Massima gittata alla velocità vO (metri) REAL :: range ! Gittata con un dato angolo (metri) REAL :: radian ! Angolo iniziale (in radianti) INTEGER :: theta ! Angolo iniziale (in gradi) REAL :: v0 ! Velocità del proiettile (in m/s) ! Inizializza le variabili. max_range = 0. max_degrees = 0 v0 = 20. ! Calcolo ciclico per ogni angolo. loop: DO theta = 0, 90 ! Angolo in radianti. radian = real (theta) * gradi_rad ! Calcola la gittata in metri range = (-2.* v0**2 / gravity) * sin(radian) * cos(radian) ! Visualizza il valore della gittata per questo angolo. WRITE (*,*) 'THETA= ' , theta, ' gradi; Gittata = ', range, ' metri ' ! Confronta la gittata corrente con la gittata massima precedente. ! Se la gittata corrente è maggiore, salva il suo valore ! e l'angolo corrispondente. IF ( range > max_range ) THEN max_range = range max_degrees = theta END IF END DO loop ! Lascia una riga vuota e visualizza la gittata massima ! e l'angolo corrispondente. WRITE (*,*) '' WRITE (*,*) 'Gittata massima = ', max_range, ' a' , max_degrees, ' gradi' END PROGRAM Grazie, vi giuro!
__________________
Non ho niente altro da offrire alle altre persone, se non la mia stessa confusione something cold is creepin' around, blue ghost is got me, I feel myself sinkin' down L'arte non insegna niente, tranne il senso della vita |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2000
Città: Roma
Messaggi: 1612
|
così dovrebbe andare...
Program gittata !Programma per il calcolo della distanza percorsa da un proiettile !sparato con una velocit iniziale ed un angolo theta rispetto al suolo. IMPLICIT NONE ! Dichiarazione dei parametri PARAMETER (gradi_rad = 0.01745329) ! Da gradi a rad ! Dichiara le variabili REAL gravity ! Accelerazione di gravità (m/s*s) INTEGER max_degrees ! Angolo di massima gittata (gradi) REAL max_range ! Massima gittata alla velocità vO (metri) REAL range ! Gittata con un dato angolo (metri) REAL radian ! Angolo iniziale (in radianti) INTEGER theta ! Angolo iniziale (in gradi) REAL v0 ! Velocità del proiettile (in m/s) gravity = -9.81 ! Inizializza le variabili. max_range = 0. max_degrees = 0 v0 = 20. ! Calcolo ciclico per ogni angolo. DO theta = 0, 90 ! Angolo in radianti. radian = float(theta) * gradi_rad ! Calcola la gittata in metri range = (-2.* v0**2 / gravity) * sin(radian) * cos(radian) ! Visualizza il valore della gittata per questo angolo. WRITE (*,*) 'THETA= ' , theta, ' gradi; Gittata = ', range, ' metri ' ! Confronta la gittata corrente con la gittata massima precedente. ! Se la gittata corrente è maggiore, salva il suo valore ! e l'angolo corrispondente. IF ( range.GT.max_range ) THEN max_range = range max_degrees = theta ENDIF ENDDO ! Lascia una riga vuota e visualizza la gittata massima ! e l'angolo corrispondente. WRITE (*,*) WRITE (*,*) 'Gittata massima = ', max_range, ' a' , max_degrees, ' gradi' stop end
__________________
peter |
|
|
|
|
|
#3 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16214
|
Dunque dunque dunque... il Fortran 77 attribuisce un significato speciale alle colonne: le prime 5 sono per il numero di riga, la sesta per l'indicatore di prosecuzione di riga, quelle da 7 a 72 per il codice... i commenti sono su una riga sola che comincia con una "C" alla prima colonna... vediamo...
Codice:
program gittata
c
c Programma per il calcolo della distanza percorsa da un proiettile
c sparato con una velocit iniziale ed un angolo theta rispetto al suolo.
c
implicit none
c
c Dichiarazione dei parametri
c gradi_rad = conversione da gradi a radianti
c gravity = accelerazione di gravita'
c
real gradi_rad,gravity
parameter (gradi_rad=0.01745329,gravity=-9.81)
c
c Dichiarazione delle variabili
c max_degrees = angolazione massima, in gradi
c theta = angolo iniziale, in gradi
c max_range = gittata massima alla velocita' v0, in metri
c range = gittata con un angolo dato, in metri
c radian = angolo iniziale, in radianti
c v0 = velocita' iniziale, in m/s
c
integer max_degrees,theta
real max_range,range,radian,v0
c
c Inizializzazione variabili
c
max_range=0
max_degrees=0
v0=20
c
c Calcolo ciclico per ogni angolo
c
do 10 theta=0,90
c
c Angolo in radianti.
c
radian=theta*gradi_rad
c
c Calcola la gittata in metri
c
range=((-2.* v0**2)/gravity)*sin(radian)*cos(radian)
c
c Visualizza il valore della gittata per questo angolo.
c
write(*,*) 'Theta= ',theta,' gradi; Gittata= ',range,' metri'
c
c Confronta la gittata corrente con la gittata massima precedente.
c Se la gittata corrente è maggiore, salva il suo valore
c e l'angolo corrispondente.
c
if (range.gt.max_range) then
max_range=range
max_degrees=theta
endif
10 continue
c
c Lascia una riga vuota e visualizza la gittata massima
c e l'angolo corrispondente.
write(*,*) ''
write(*,*) 'Gittata massima = ', max_range, ' a' , max_degrees, ' gradi'
c
c Fine programma
c
stop
end
Se trovo una guida sul Web, te la segnalo.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu Ultima modifica di Ziosilvio : 19-07-2005 alle 14:17. Motivo: Ricordavo male come si mettono i commenti |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:29.



















