作者fermmy (羃幂)
看板Fortran
标题[问题] Fortran如何抓取指定间隔列的资料
时间Thu May 18 20:12:14 2017
大家好
想问大家一个很基本的可是已经困扰我很久的问题
想要让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://webptt.com/cn.aspx?n=bbs/Fortran/M.1495109537.A.E86.html
1F:→ rex0707: a1向量大小为2 可是i=1~6 那a1(i)不就会超出你设的大小05/19 01:29
2F:→ rex0707: 而且看不太懂你的问题 是想要每两行输出一次资料看有没有05/19 01:30
3F:→ rex0707: 错吗?05/19 01:30
谢谢r大的回复~我有再修改一下文章,我文中的M写错了应该是6。对,是希望透过这个简
单的范例每2行输出资料,看程式有没有写错。
※ 编辑: fermmy (223.137.251.225), 05/19/2017 08:57:50
4F:→ jubilee2: 2解 1:if(mod(i,2)==1) 2:拆成两个do回圈(一个读一个写)05/19 09:34
5F:→ Cypresslin: 如果你资料总列数为偶数x,那就是用一个i=1,x/2的回圈05/19 11:55
6F:→ Cypresslin: 里面放两个read,一个读a1, a2一个不放变数05/19 11:56
7F:→ Cypresslin: 题外话,可以用shell的话 sed -n '1~2p' 指令一行搞定05/19 11:59
8F:→ rex0707: 应该是每行资料都要读 只是每两行输出一次检查05/19 12:20
9F:→ rex0707: do i = 1 , M / read a1 a2 / if (mod==1) write / enddo05/19 12:21
10F:→ rex0707: 改一下 才能输出偶数行资料 (mod(i,2)==0)05/19 13:27
11F:→ blc: do; read; read; write; end do05/19 17:52
谢谢大家的解惑~!!!已经用mod指令写出来了,再次谢谢各位m(_ _)m
※ 编辑: fermmy (114.36.71.33), 05/19/2017 23:36:43
12F:→ janhon: real ? integer 吧?! 05/21 04:37