アプリ版:「スタンプのみでお礼する」機能のリリースについて

助けてください~
---------------------------------------
華氏゜Fが与えられた時、摂氏℃と絶対温度Zを求めよ
C=(5/9)(F-32),Z=C+273.16
ここで華氏゜Fは書式カードF1.5でカードに用意されていて、数値999.9のデータを読み込んだら終わりとする。
ただし、華氏゜Fの値は、-50.0゜Fから200.0゜Fまで10.0゜Fごとに変化させる。
---------------------------------------
で、私が頑張って(っていっても教科書を見ながら)書いたのが以下です。
---------------------------------------
*

write(6,200)
200 format(1h ,8x,1hf,10x,1hc, 9x,1hz)
10 read(5,100)f
100 format(f5.1)
if(f.eq.999.9)stop
c=(f-32.0)*5.0/9.0
z=c+273.16
write(6,201)f,c,z
201 format(1h ,3(5x,f5.1))
go to 10
end
-------------------------------------
100 formatの下からdo文を使うのが狙いかと思いますがよくわかりません。
ちなみに参考教科書は入力データが
-------------------------------------
32.5
135.5
68.3
999.9
-------------------------------------
となっていました。多分これは使わないです。
よろしくお願いします(><)

A 回答 (2件)

DO 文は普通は回数の決まっているループを回る時に使います。

途中で別の条件でループを終了することはありますが、それでも今何回目かを意識する処理で使うのが普通だと思います。
ただ、多くのコンパイラではDO WHILE が使えるので、もしそういうコンパイラを使っているなら

READ(5,100) F
100 FORMAT(...)
DO WHILE(F.NE.999.9)
C=...
Z=...
WRITE(6,200) F,C,Z
200 FORMAT(...)
READ(5,100) F
END DO
END

WHILEがないコンパイラなら今のでいいと思います。
    • good
    • 0

上記のプログラムから、「100 FORMAT」以降を「DO」文にすると、データが1件読み込まれた後は永久ループに入ります。


どこからどこまでを繰り返したいのかをよく考えて、「GO TO」文を使わないでプログラムを作成してみたら判ると思います。
    • good
    • 0

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