dポイントプレゼントキャンペーン実施中!

Fortoranで放物運動のプログラムを考えています。
(初速度V0,角度THETA,終了時間TEND,時間間隔TSETP

REAL V0,TH,THETA,G,T,X,Y,TEND,TSETP
OPEN(8,FILE="INPUT.TXT",FORM='FORMATTED')
OPEN(9,FILE="OUTPUT.TXT",FORM='FORMATTED')

READ(8,100) V0,THETA,TEND,TSTEP
100 FORMAT(4F6.2)
WRITE(9,150) V0,V0,THETA,TEND,TSTEP
150 FORMAT(' ','V0=',F6.2,5X,'THETA=',F6.2,' ','TEND=',F6.2,5X,'TSTEP=',F6.2)


G=9.8
TH=3.14159*THETA/180
T=0

200 X=V0*T*COS(TH)
Y=V0*T*SIN(TH)-G*T**2/2

IF(Y.LT.0.0) GO TO 400
WRITE(9,300) T,X,Y
300 FORMAT(' ',5X,'TIME=',F6.2,5X,'X=',F6.1,5X,'Y=',F6.1)

T=T+TSTEP
IF(T.LE.TEND) GO TO 200
400 STOP
END


このようなプログラムを考えて、入力ファイルに
50 45 10 0.5
というデータを打ち込むと、出力ファイルに
TIME=0.00 X=0.0 Y=0.0
   .     .    .
   .     .    .
というのが無限に続いてしまいます。
自分ではどこが間違っているのかわかりません。
ちなみに翻訳してもエラーはでませんでした。  
見にくくなって申し訳ございません。 

A 回答 (3件)

50 45 10 0.5



050.00045.00010.00000.50
ぐらいにしたらうまく行くような気がしますけど。
これぐらいならFORMATを指定しなくても「*」のままで、適当に処理してくれないですかね。

> TIME=0.00 X=0.0 Y=0.0
この部分よりも、
WRITE(9,150) V0,V0,THETA,TEND,TSTEP
の出力結果を確認するほうが先決なのでは。
    • good
    • 0
この回答へのお礼

050.00045.00010.00000.50
と入力するとちゃんと実行してくれました。
ありがとうございました。
FORMATの意味がわかっていませんでいた。すいませんでした。

お礼日時:2003/11/18 22:20

No.2さんのおっしゃっていることを確認できませんか?



私もちゃんとreadできていないんじゃないかと思っています。
    • good
    • 0
この回答へのお礼

やっぱりちゃんとreadされていませんでした。
ご迷惑をおかけしました。

お礼日時:2003/11/18 22:17

CやC++ではないので、カテゴリー的にはおかしいのかもしれませんが....(Fortranですよね?)



100番地のformat定義とreadされるデータがあっていないんじゃないでしょうか?

ちゃんとV0,THETA,TEND,TSTEPに所望の数値が読まれていますか?
    • good
    • 0
この回答へのお礼

Fortranです。
入力ファイルのデータ列が間違っているのでしょうか?
読み込まれていれば、ちゃんとデータが出力されると思うのですが…

お礼日時:2003/11/15 12:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!