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

看板Fortran作者時間11年前 (2013/12/07 22:37), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串3/3 (看更多)
如果沒有誤會意思 應該是你有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的值都可以計算並列出來!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.112.18

12/11 22:39, , 1F
SORRY我真的對陣列不是很熟悉,我再慢慢摸,先謝謝你了!!
12/11 22:39, 1F

12/12 17:55, , 2F
語法的問題只能靠自己了XD
12/12 17:55, 2F
文章代碼(AID): #1IepAM_W (Fortran)
文章代碼(AID): #1IepAM_W (Fortran)