Re: [請益] 沒有讀取到的資料要計算+輸出

作者: wenni   2013-12-07 22:37:07
如果沒有誤會意思
應該是你有40筆資料
但是你要有1~102的結果
中間的補0這樣
如果是這樣 也許可以這樣解
開個2個temp array 長度為40
1個為int 1個為real*8 (設為 ND_temp 及 VAL_temp)
再開兩個real*8 長度為102 (設為ND 及 VAL, 其實ND不開也行啦XD)
array請自己記得先初始化塞0及0.0D0
先將40筆資料讀進array中
以90語法為例可以寫成這樣
DO I = 1 , 40
READ(104,*) ND_temp(I) , VAL_temp(I)
END DO
然後再將ND ARRAY的排序放入
DO I , 1 , 102
ND(I) = I
END DO
最後再做一次簡單的塞值即可
DO I = 1 , 40
VAL( ND_temp(I) ) = VAL_temp(I)
END DO
這樣子就會都放進去了
可以得到一個ND array 裡面的int是從1~102
然後VAL則是1~20以及83~102有值 其他都是0.0D0
之後就直接利用ND 跟VAL兩個array來進行計算及輸出即可
希望你看的懂語法
簡單來說就是先記住我到底要放進那邊
然後再放進去該放的地方就對了XD
如果我誤會你想要做的事的話
那就再討論吧XD
※ 引述《JiGo (ㄐㄍ)》之銘言:
: 主程式有一個輸出的問題
: 就是計算出的值如果是0該筆資料就不會輸出
: 如下:
: 1 35.00
: 2 35.00
: 3 12.34
: 4 12.34
: 5 3.709
: 6 3.709
: 7 1.028
: 8 1.028: 9 0.2716
: 10 0.2716
: 11 6.9465E-02
: 12 6.9465E-02
: 13 1.7356E-02
: 14 1.7356E-02
: 15 4.2615E-03
: 16 4.2615E-03
: 17 1.0322E-03
: 18 1.0322E-03
: 19 2.4730E-04
: 20 2.4730E-04
: 83 35.00
: 84 35.00
: 85 12.34
: 86 12.34
: 87 3.709
: 88 3.709
: 89 1.028
: 90 1.028
: 91 0.2716
: 92 0.2716
: 93 6.9465E-02
: 94 6.9465E-02
: 95 1.7356E-02
: 96 1.7356E-02
: 97 4.2615E-03
: 98 4.2615E-03
: 99 1.0322E-03
: 100 1.0322E-03
: 101 2.4730E-04
: 102 2.4730E-04
: 其中第21~82的值應該是0所以沒有輸出
: 102~128的值也是0所以也沒輸出
: 我現在的程式碼計算大致如下:
: DO J=1,128
: 407 CONTINUE
: READ(104,305,ERR=407)ND,VAL
: IF(ND.LT.1 .OR. ND.GT.128) GOTO 407
: U01=VAL
: CJ=U01/FRA
: WRITE(108,306)ND,CJ
: END DO
: 但這這樣在輸出檔中只能看到上述有列出來的資料計算結果
: 21~82 和 102~128 的資料卻無法做計算跟輸出
: 該怎麼讓fortran程式碼去作判斷
: 當沒讀到ND值的時候讓VAL=0呢?
: 簡單來說就是想把1~128的值都可以計算並列出來!!
作者: JiGo (ㄐㄍ)   2013-02-11 22:39:00
SORRY我真的對陣列不是很熟悉,我再慢慢摸,先謝謝你了!!
作者: wenni   2013-02-12 17:55:00
語法的問題只能靠自己了XD

Links booklink

Contact Us: admin [ a t ] ucptt.com