我是 FORTRAN 的新手,必须编写一个 FORTRAN 77 程序才能从文件重定向或标准输入中读取以下格式:
[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,以及接下来的两个值(3.0、5.0),但我跳过了 6.0
任何帮助都会很棒。谢谢。