爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4047|回复: 4

[求助] 简单的txt文档的数据提取。。。(编的程序输不出来,大家能否帮帮我看看哪里不对)

[复制链接]

新浪微博达人勋

发表于 2012-10-27 11:40:04 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
1970    1  -2.26
1970    2   0.28
1970    3  -1.41
1970    4  -1.56
1970    5   1.11
1970    6   1.87
1970    7   0.13
1970    8   0.00
1970    9   0.06
1970   10  -0.49
1970   11  -0.76
1970   12  -1.20
1971    1  -1.82
1971    2  -0.17
1971    3  -1.28
1971    4  -0.41
1971    5   0.51
1971    6  -1.28
1971    7   0.27
1971    8   1.87
1971    9   0.53
1971   10   1.14
1971   11  -0.34
1971   12   0.47
相当于这种txt文档资料,从1970年到2009年提取40年每年7-10月就行了,这是我编的程序,但是输不出结果,新手跪请高人指点
program main
implicit none
integer i
integer,parameter::j=2
real a(480,3)
open(10,file='I:\NAOdata\nao.txt')
open(20,file='I:\NAOdata\2.txt')
read(10,100) a
100 format(1x,I6,I3,F5.2)
do i=1,480
  if (a(i,j)>=7.and. a(i,j)<=10) then
  write(20,*)a
  end if
enddo
end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-10-27 12:40:05 | 显示全部楼层
楼主先一步步的调试一下看看,这个是很基础的东西的,必须要学会自己调试。
你可以先把判断的部分去掉,然后看看能否输出,如果不能,看看有没有提示什么错误。
再把你的a这个数组好好检查一下,看看是不是文件读取的时候出错了。
至于应该如何读取多行的文件,这个你看看彭国伦的教材就知道了。非常基础的知识
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-27 15:05:55 | 显示全部楼层
LZ你看看,你声明的数组a是real型,读取数据的时候,指定的格式有I、有F,这显然不对
另外LZ这种处理数据格式的风格不太好,试试下面这段程序
program main
implicit none
integer,parameter :: y_s = 1970,y_e = 2009
integer,parameter :: num_m = 12,m_1 = 7,m_2=10

type meter_data
  integer :: y
  integer :: m
  real :: r_data
end type meter_data

type(meter_data) :: a

integer :: iy,im

open(10,file='I:\NAOdata\nao.txt')
open(20,file='I:\NAOdata\2.txt')

do iy = y_s,y_e
   do im = 1,num_m
      read(10,*) a
      if (a%m>=m_1 .and. a%m<=m_2) then
          write(20,100) a
100       format(I4,1X,I2,1X,F5.2)
      end if
   end do
end do

close(10)
close(20)

stop
end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2012-10-27 16:29:14 | 显示全部楼层
本帖最后由 言深深 于 2012-10-27 16:30 编辑

哈哈,看到楼上的程序,我也给一个吧,另外,楼组的程序不对是肯定的,因为不做限定fortran定义的数组和读取的结果是反的。下面是我给的程序:
parameter(ms=1970,me=2009,n=12)
real x(ms:me,n,3)
print*," program is from bbs.06climate.com, thank you for using"

open(10,file='I:\NAOdata\nao.txt')
open(20,file='I:\NAOdata\2.txt')
do i=ms,me
do j=1,n
read(10,*) (x(i,j,k),k=1,3)
enddo
do j=7,10
write(20,"(2i8,f7.2)") int(x(i,j,1)),int(x(i,j,2)),x(i,j,3)
enddo
enddo
close(20)
close(10)

end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-27 17:33:52 | 显示全部楼层
好热心的友人,楼主是改好好把基础打牢了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表