こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Fortoran

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
   .     .    .
   .     .    .
というのが無限に続いてしまいます。
自分ではどこが間違っているのかわかりません。
ちなみに翻訳してもエラーはでませんでした。  
見にくくなって申し訳ございません。 

投稿日時 - 2003-11-15 00:21:50

QNo.706017

困ってます

質問者が選んだベストアンサー

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
の出力結果を確認するほうが先決なのでは。

投稿日時 - 2003-11-15 18:30:56

お礼

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

投稿日時 - 2003-11-18 22:20:18

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

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

私もちゃんとreadできていないんじゃないかと思っています。

投稿日時 - 2003-11-16 17:35:02

お礼

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

投稿日時 - 2003-11-18 22:17:34

ANo.1

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

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

ちゃんとV0,THETA,TEND,TSTEPに所望の数値が読まれていますか?

投稿日時 - 2003-11-15 00:35:28

お礼

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

投稿日時 - 2003-11-15 12:49:55

あなたにオススメの質問