Re: [问题] 连续变量名称跟加法的设定

楼主: zmack0905 (降太)   2013-05-16 09:41:54
感谢大家热心地回应Q___Q
首先先附上我改完的程式
DO i=1,333
DO j=1,495
DO k=1,35
READ(10,*)A(i,j,k)
END DO
END DO
END DO
DO i=1,333
DO j=1,495/3
DO k=1,35
DO l=1,3
A(i,j,k)=A(i,(j-1)*3+l,k)
END DO
END DO
END DO
END DO
最后还是用三层循环去包
因为自己的观念实在没有强大到可以用o大那种写法囧
不过又产生其他的问题...
1.READ回报错误编号(24)forrtl: severe (24): end-of-file during read, unit
简单的说就是宣告读值的范围比实际的档案大
不过在以前用
DO i=1,333
DO j=1,495
READ(10,*)S1(i,j),S2(i,j),S3(i,j),S4(i,j),
& S5(i,j),S6(i,j),S7(i,j),S8(i,j),
& S9(i,j),S10(i,j),S11(i,j),S12(i,j),
& S13(i,j),S14(i,j),S15(i,j),S16(i,j),
& S17(i,j),S18(i,j),S19(i,j),S20(i,j),
& S21(i,j),S22(i,j),S23(i,j),S24(i,j),
& S25(i,j),S26(i,j),S27(i,j),S28(i,j),
& S29(i,j),S30(i,j),S31(i,j),S32(i,j),
& S33(i,j),S34(i,j),S35(i,j)
ENDDO
ENDDO
都OK...难道这种两种写法是不一样的?
2.试着FORALL简化程式
FORALL(i=1:333,j=1:495,k=1:45)
READ(10,*)A(i,j,k)
END FORALL
却回报错误28,表示这不是正确的FORALL写法
可是我参考的资料是这种写法阿囧....
以上两个问题再麻烦各位了
作者: Cypresslin (啊哈哈~~)   2013-05-16 23:34:00
Q1-> 我猜你35笔资料都在同一行,一个read会换一行所以新的读取方法只读到第一个值就跳下一行继续读
作者: gilocustom   2013-05-17 00:37:00
答2:http://stackoverflow.com/questions/8602596/fortran-forall-restrictions 。

Links booklink

Contact Us: admin [ a t ] ucptt.com