Re: [問題] 連續變數名稱跟加法的設定

作者: snowanimal (動物先生)   2013-05-19 17:43:27
※ 引述《zmack0905 (降太)》之銘言:
: 標題: Re: [問題] 連續變數名稱跟加法的設定
: 時間: Thu May 16 09:41:54 2013
:
: DO i=1,333
: DO j=1,495
: DO k=1,35
: READ(10,*)A(i,j,k)
: END DO
: END DO
: END DO
:
: 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...難道這種兩種寫法是不一樣的?
是的,這兩種方法當然不一樣 = ="
因為就如推文的板友所說的資料結構不同,所以才會這樣,
遇到這種狀況就是把讀進去的資料立刻寫出來,看是不是你要的東西。
先讀一層就知道他有沒有擺放在正確的位置了。
或許你應該要用:
do i=1,333
do j=1,495
read (10,*) (s(i,j,k)k=1,35)
enddo
enddo
或者把k包在最外面也能解決 = =?
do k=1,35
do i=1,333
do j=1,495
read (10,*) s(i,j,k)
enddo
enddo
enddo
: ◆ From: 140.120.29.185
: → Cypresslin:Q1-> 我猜你35筆資料都在同一行,一個read會換一行 05/16 23:34
: → Cypresslin:所以新的讀取方法只讀到第一個值就跳下一行繼續讀 05/16 23:35
作者: Cypresslin (啊哈哈~~)   2013-05-21 22:02:00
k包在外面也是一樣的結果喔

Links booklink

Contact Us: admin [ a t ] ucptt.com