私はプログラミングを学び始めたばかりで、FORTRAN95が私の第一言語です。このPDFファイルの45ページの下部にある質問4i)を完了しようとしています。参考までに、これが私のソースコード全体です。
PROGRAM PARACHUTIST
! Tabulation of parachutist's descent z and and speed zdot
! as functions of time t
!Assign the program's associated constants
IMPLICIT NONE
REAL z, zdot, g, U1, U2, z0, u0, t0, q0, t, x,c,s
INTEGER I
g=9.8
U1=54
U2=5
!Break z0 down a little with q0
q0=COSH(g*t0/U1)
z0=U1**2/g*LOG(q0)
u0=U1*TANH(g*t0/U1)
!Prompt for and read in the free-fall time
Print*, 'Input free-fall time in seconds:'
Read*, t0
!Print the table headings
WRITE(*,1000)
1000 FORMAT (6X, 'TIME', 6X, 'DISTANCE', 6X, 'VELOCITY', /6X, '(SEC)', 7X, '(M)', 10X, '(M/SEC)',&
/6X, '0.0', 10X, '0.0', 10X, '0.0' )
!Loop covering the specified times
t=0
! I know I'm meant to start some DO loop here, but unsure
! how to set it up.
! Calculate the distance above ground
200 IF(t<=15) THEN
x=g*t/U1
z=U1**2/g*LOG(COSH(x))
zdot=U1*TANH(x)
Elseif(t>15) THEN
x=g*(t-t0)/U2 !store re-used expressions
c=cosh(x)
s=sinh(x)
z= z0 + (U2**2/g)*LOG(c+ u0/U2*s)
zdot=U2*(U2*s+u0*c)/(U2*c+u0*s)
Endif
!Print a line of table using T formats
WRITE(*,100) t, z, zdot
100 Format(4X, F5.2, 6X, F7.2, 6X, F7.2)
!Stop with message if landed
If(z.GE.500) THEN
STOP
!If we haven't yet landed then increment t as in
! problem specs
If(t<15) then
t=t+1
Elseif(t.GE.15) then
t=t+10
ENDIF
GOTO 200
300 STOP
ENDIF
!End of the t-loop
END PROGRAM PARACHUTIST
今、私は変数のタイプ/値を正しく割り当て、適切な形式で見出しを印刷したと思います(確かではありませんが、エラーが表示された場合は教えてください)、私の主な問題は「!指定された時間」。そのコードのブロック全体は、正直なところ、私は完全に混乱しています。ループを構築する方法についてはよくわかりません。もっと単純な問題でしか実行しておらず、この問題に頭を悩ませることはできません。誰かが見て、私にいくつかの提案をしてくれませんか?