24小时热门版块排行榜    

查看: 462  |  回复: 2

xk6891

至尊木虫 (著名写手)

[求助] fortran如何消去相同行,使其只显示其中一行

有下列这样的一组数,希望能将多余,相同内容的行删去(只用fortran,不玩shell),譬如(下面1,3,5行相同)
  C   7.273878   8.481164   4.787954
  H   6.812623   8.515214   5.770640
  C   7.273878   8.481164   4.787954
  H   7.588283   9.573033   4.554239
  C   7.273878   8.481164   4.787954
  H   7.102666   8.004816   3.811218
看了网上的这种解法
[code]
   character aa(1000000)*256,bb*256
    dimension idd(1000000)
    open(1,file='text.txt',status='old')
    icc=0
1    continue
    read(1,'(a)'.,end=2,err=1) bb*256
    icc=icc+1
    aa(icc)(1:256)=bb(1:256)
2   continue
    idd(1)=0
    do 10 i=1,icc-1
    do 20 j=i+1,icc
    idd(j)=0
    if(aa(i)(1:256).eq.aa(j)(1:256)) idd(j)=1
20  continue
10  continue
    do 30 i=1,icc
    if(idd(i).eq.1) goto 30
    write(*,'(A)') aa(i)
30  continue
    end
[code]
鄙人愚钝,有几处表示不理解
aa(1000000)*256表示什么意思
aa(icc)(1:256)=bb(1:256) 不理解
最关键的是我认为if(aa(i)(1:256).eq.aa(j)(1:256)) idd(j)=1这句话,是否在比较的时候会产生歧义,因为嵌套循环如果只取一个标号(j)作比较标志的话,肯定重复了,而且do 30 i=1,icc,因为已经有消去的行了,如果在用icc的循环输出,那肯定多了
还请大侠们指点一下,给个详细些的思路或者解法,晚辈拜谢。

[ Last edited by xk6891 on 2011-6-16 at 21:33 ]
回复此楼

» 猜你喜欢

人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xk6891

至尊木虫 (著名写手)

明白了,是我自己想的方向有错误,现在实验成功了,只是还没有想明白
人生自古多险阻,勤者自得天酬助。试问否泰何所依,枯藤老枝待新抽。临渊踌躇终迈步,振翅鹏起云霄冲。似是前程甚堪忧,他日振臂揽苍穹。
2楼2011-06-16 21:45:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

shell的话还真简单...
3楼2011-06-16 22:11:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xk6891 的主题更新
信息提示
请填处理意见