私はFORTRANを初めて使用するので、ファイルリダイレクトまたは標準入力から次の形式を読み取るためにFORTRAN77プログラムを作成する必要があります。
[CHARACTER] [REAL] [REAL] [REAL] ... (can have any number of these)
D [INTEGER] (only one of these)
[REAL] [REAL] [REAL] ... (can have any number of these)
入力例は次のとおりです。
T 1.0 2.0 3.0
S 1.0 2.0 4.0
Y 3.0 4.0 5.0
D 2
3.0 5.0 6.0
4.5 4.6 5.6
私の母国語はC++なので、readステートメントが自動的に次の行に移動するというこのアイデア全体に慣れていません。
これまでのところ、私は次のコードを持っています:
c234567
character*1 D
character*1 LETTER
real X, Y, Z
integer lines
real point1, point2, point3
85 format (3F10.6)
100 format (A1, 5X, F10.6, 5X, F10.6, 4X, F10.6)
990 format (A, I10)
MAX = 6
LETTER = 'Z'
D = 'D'
read *, LETTER, X, Y, Z
10 if(LETTER .ne. D) then
write (6, 100) LETTER, X, Y, Z
read *, LETTER, X, Y, Z
goto 10
else
goto 20
endif
C =====================================================
20 lines = aint(X)
write (*,990) 'LINES: ', lines
write (6, 85) X, Y, Z
read *, Z
write (6, 85) X, Y, Z
end
ご覧のとおり、入力の最初の部分は正常に取得されますが、その後、readステートメント(read *、Zは次の行に移動)のために、すべてがどろどろになります。上記の特定の入力ファイルでは、Dの後に2があり、次の2つの値(3.0、5.0)がありますが、6.0はスキップしています。
どんな助けでも素晴らしいでしょう。ありがとう。