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

作者: fermmy (羃冪)   2017-05-18 20:12:14
大家好
想問大家一個很基本的可是已經困擾我很久的問題
想要讓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
作者: rex0707 (我就是我)   2017-05-19 01:29:00
a1向量大小為2 可是i=1~6 那a1(i)不就會超出你設的大小而且看不太懂你的問題 是想要每兩行輸出一次資料看有沒有錯嗎?
作者: jubilee2 (3321)   2017-05-19 09:34:00
2解 1:if(mod(i,2)==1) 2:拆成兩個do迴圈(一個讀一個寫)
作者: Cypresslin (啊哈哈~~)   2017-05-19 11:55:00
如果你資料總列數為偶數x,那就是用一個i=1,x/2的迴圈裡面放兩個read,一個讀a1, a2一個不放變數題外話,可以用shell的話 sed -n '1~2p' 指令一行搞定
作者: rex0707 (我就是我)   2017-05-19 12:20:00
應該是每行資料都要讀 只是每兩行輸出一次檢查do i = 1 , M / read a1 a2 / if (mod==1) write / enddo改一下 才能輸出偶數行資料 (mod(i,2)==0)
作者: blc (Anemos)   2017-05-19 17:52:00
do; read; read; write; end do
作者: janhon (海牛)   2017-05-21 04:37:00
real ? integer 吧?!

Links booklink

Contact Us: admin [ a t ] ucptt.com