24小时热门版块排行榜    

查看: 1031  |  回复: 6

vuchiyuan

木虫 (小有名气)

[求助] 求助:简单判断代码(Fortran语言) 已有1人参与

有如图1的文件,详见附件1(1.txt),文件中包含若干段(两千段左右)数据,每一段有个编号,如图1中圈出来的数字,数据每行两个实数,结束时有个“END”。
要求经过Fortran编程处理得到结果文件,如图2所示。结果文件第一行统计总共有多少段数据,如图2中的“102”;后面为每段数据的排列,包含3列数据,前两列与处理前数据相同,第三列为固定值“0”;在每段数据开始前一行为“x 0”(其中x表示该段数据的行数,0为固定值),如图2中框出的数据。
请应助的朋友给出Fortran代码。求助:简单判断代码(Fortran语言)
1.png


求助:简单判断代码(Fortran语言)-1
2.jpg
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 1.txt
  • 2015-11-28 18:48:08, 2.19 M

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wxws.2008

木虫 (正式写手)

2楼2015-11-28 22:49:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wxws.2008

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
vuchiyuan: 金币+100, ★★★★★最佳答案, 在您提供的基础上自己改了一下,已很好解决,谢谢! 2015-11-29 13:46:49
! 计算之前,先把原始数据在excel表中,把空格都填充了,本人将空格填充为999999
! 先读一遍程序,找到开头是多少个END,就是几段,并找到对应的行数
! 然后可以根据每个END对应的行数计算得到每段的个数,以及输出对应每段的数字
! 最后根据需要,将999999变为空格
        program main
        implicit none
        integer,parameter::n=99036
        integer i,j,k,s,no,nodata,p
        integer,allocatable::num(,nums(
        real a(2)
        character(len=100) string
       
        open(21,file="I:\王琦ph值\test111.txt"
        open(22,file="I:\王琦ph值\test111_result.txt"
       
        nodata=999999
       
        ! **** 寻找END的个数及位置*********
        p=0
        do i=1,n
                read(21,*) string
                if(string=="END" p=p+1
        end do
        rewind(21)
       
        allocate(num(p))
        allocate(nums(p))
       
        j=0
        do i=1,n
                read(21,*) string
                if(string=="END" then
                        j=j+1
                        num(j)=i
                end if
        end do
        rewind(21)
       
       
        ! **** 计算每段的个数*********
        nums(1)=num(1)-2
        do i=2,p
                nums(i)=num(i)-num(i-1)-2
        end do
       
       
        write(22,"(3(1xi6))" p,(nodata,i=1,2)
       
        ! **** 写入每段的个数以及每行数字*********
     s=1
        do i=1,p
                write(22,"(3(1xi6))" nums(i),0,nodata
                read(21,*)
                  do j=s+1,num(i)-1
                          read(21,*,end=200) no, a(
                          write(22,"(2(1xf15.6),1xi6)" a(,0
                  end do
                  read(21,*)
                  s=num(i)+1
        end do
200        close(21)
       
        deallocate(num)
        deallocate(nums)
        end program
3楼2015-11-29 00:27:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wxws.2008

木虫 (正式写手)

引用回帖:
3楼: Originally posted by wxws.2008 at 2015-11-29 00:27:13
! 计算之前,先把原始数据在excel表中,把空格都填充了,本人将空格填充为999999
! 先读一遍程序,找到开头是多少个END,就是几段,并找到对应的行数
! 然后可以根据每个END对应的行数计算得到每段的个数,以及输 ...

一个冒号紧跟一个后括号,系统自动变成表情了~
4楼2015-11-29 00:29:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

vuchiyuan

木虫 (小有名气)

引用回帖:
3楼: Originally posted by wxws.2008 at 2015-11-29 00:27:13
! 计算之前,先把原始数据在excel表中,把空格都填充了,本人将空格填充为999999
! 先读一遍程序,找到开头是多少个END,就是几段,并找到对应的行数
! 然后可以根据每个END对应的行数计算得到每段的个数,以及输 ...

麻烦直接上传f文件,另外,有的文档太长用excel打不开。先谢了!
5楼2015-11-29 12:01:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bennett_14

木虫 (正式写手)

引用回帖:
4楼: Originally posted by wxws.2008 at 2015-11-29 00:29:13
一个冒号紧跟一个后括号,系统自动变成表情了~...

层主的这样解决方案,是要把1.txt先放在excel中填充吗????
君子当自强不息,死而后已!
6楼2016-01-03 11:42:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wxws.2008

木虫 (正式写手)

少了可以,多了就直接读就行,不必excel

发自小木虫Android客户端
7楼2016-01-03 16:12:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 vuchiyuan 的主题更新
信息提示
请填处理意见