[問題] Fortran如何抓取指定間隔列的資料

看板Fortran作者 (羃冪)時間7年前 (2017/05/18 20:12), 7年前編輯推噓0(0012)
留言12則, 5人參與, 最新討論串1/1
大家好 想問大家一個很基本的可是已經困擾我很久的問題 想要讓Fortran讀一個記事本,然後幾行輸出結果,類似excel裡面的offset指令的功能, 其實也是可以用excel做可是因為記事本很大太費時,想請問應該如何用Fortran寫。 範例檔案.txt 15 76 85 69 52 80 25 31 65 41 我寫的 program text REAL a1, a2,l parameter (M=6) DIMENSION a1(M), a2(M) open(11,file='file.txt') k=6 do i=1,k read(11,*) a1(i), a2(i) l=i*2 !兩行想取一次 if(l<k) then write(*,*) l !這裡有跑出來l的值可是下面write部分就全部都是0了 write(*,*) a1(l), a2(l) endif enddo end 想要輸出檔案為 15 76 52 80 65 41 因為好幾年沒有碰Fortran了...知道問題可能有點笨...不好意思,麻煩大家了,謝謝大 家m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.157.183 ※ 文章網址: https://www.ptt.cc/bbs/Fortran/M.1495109537.A.E86.html

05/19 01:29, , 1F
a1向量大小為2 可是i=1~6 那a1(i)不就會超出你設的大小
05/19 01:29, 1F

05/19 01:30, , 2F
而且看不太懂你的問題 是想要每兩行輸出一次資料看有沒有
05/19 01:30, 2F

05/19 01:30, , 3F
錯嗎?
05/19 01:30, 3F
謝謝r大的回復~我有再修改一下文章,我文中的M寫錯了應該是6。對,是希望透過這個簡 單的範例每2行輸出資料,看程式有沒有寫錯。 ※ 編輯: fermmy (223.137.251.225), 05/19/2017 08:57:50

05/19 09:34, , 4F
2解 1:if(mod(i,2)==1) 2:拆成兩個do迴圈(一個讀一個寫)
05/19 09:34, 4F

05/19 11:55, , 5F
如果你資料總列數為偶數x,那就是用一個i=1,x/2的迴圈
05/19 11:55, 5F

05/19 11:56, , 6F
裡面放兩個read,一個讀a1, a2一個不放變數
05/19 11:56, 6F

05/19 11:59, , 7F
題外話,可以用shell的話 sed -n '1~2p' 指令一行搞定
05/19 11:59, 7F

05/19 12:20, , 8F
應該是每行資料都要讀 只是每兩行輸出一次檢查
05/19 12:20, 8F

05/19 12:21, , 9F
do i = 1 , M / read a1 a2 / if (mod==1) write / enddo
05/19 12:21, 9F

05/19 13:27, , 10F
改一下 才能輸出偶數行資料 (mod(i,2)==0)
05/19 13:27, 10F

05/19 17:52, , 11F
do; read; read; write; end do
05/19 17:52, 11F
謝謝大家的解惑~!!!已經用mod指令寫出來了,再次謝謝各位m(_ _)m ※ 編輯: fermmy (114.36.71.33), 05/19/2017 23:36:43

05/21 04:37, , 12F
real ? integer 吧?!
05/21 04:37, 12F
文章代碼(AID): #1P7O-Xw6 (Fortran)
文章代碼(AID): #1P7O-Xw6 (Fortran)