0

我希望你能帮助我编写一个程序来转换表 (p, 3) 中的 fortran 数组 (n, m)。

我试过这个程序:

program Temp
implicit none
real,dimension (23250,27)::table
real::time
integer::i
integer::j
integer::wl
integer::al
  i=1,23250  
read(*,*) time(i),wl(i),(table(i,j),j=1,27)
 j=1,27 
alt(j)=j
write(*,*) time(i),alt(j),table(i,j)
continue
continue 

endprogram Temp 

但错误消息显示为:

 D:\Travaux de thèse\modeling\essay\essay.f90(9) : Error: Syntax error, found ',' when expecting one of: <END-OF-STATEMENT> ;
  i=1,23250  
-----^
D:\Travaux de thèse\modeling\essay\essay.f90(11) : Error: Syntax error, found ',' when expecting one of: <END-OF-STATEMENT> ;
 j=1,27 
----^
D:\Travaux de thèse\modeling\essay\essay.f90(10) : Error: Constants and expressions are invalid in read-only I/O lists.   [TIME]
read(*,*) time(i),wl(i),(table(i,j),j=1,27)
----------^
D:\Travaux de thèse\modeling\essay\essay.f90(10) : Error: Constants and expressions are invalid in read-only I/O lists.   [WL]
read(*,*) time(i),wl(i),(table(i,j),j=1,27)
------------------^
D:\Travaux de thèse\modeling\essay\essay.f90(12) : Error: This name has not been declared as an array.   [ALT]
alt(j)=j
^
Error executing df.exe.

essay.exe - 5 error(s), 0 warning(s)

谁能帮助我?提前谢谢你。

4

1 回答 1

0

仅从您的示例代码来看,很难弄清楚这段代码的去向。您在定义的问题中提到的数组“数组”在哪里?如果你想循环一些东西,你需要使用'do'语句[1]。此外,我会尝试以编程方式访问该数组的维度,因此您不必对其进行硬编码。以下代码片段不完整,但也许它可以让您继续前进。

program Temp
implicit none
real,dimension (23250,27)::table
integer, dimension(2) :: table_shape
real::time
integer::i
integer::j
integer::wl
integer::al

table_shape = shape(table)
do i=1, table_shape(1)
    read(*,*) time(i),wl(i),(table(i,j),j=1,27)
    do j=1, table_shape(2)
        alt(j)=j
        write(*,*) time(i),al(j),table(i,j)
        !continue
        !continue 
    enddo
enddo

endprogram Temp 

最好的,马克斯

[1] http://en.wikibooks.org/wiki/Fortran/Fortran_control

于 2013-02-06T08:46:13.433 回答