爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6609|回复: 27

[求助] fortran运行时出错

[复制链接]

新浪微博达人勋

发表于 2014-4-3 23:27:52 | 显示全部楼层 |阅读模式

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

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

x
编译的过程都是对的,程序如下所示,程序运行时显示的结果如图所示。求大神指点。
program main
implicit none
integer m,n,l
parameter(m=144,n=96,l=20)
real mbl(m,n,l)
integer i,j,k
character h
do k=1,l
select case(k)
case(1)
          h="c:\grug\year\1991.txt"
case(2)
          h="c:\grug\year\1992.txt"
case(3)
          h="c:\grug\year\1993.txt"
case(4)
          h="c:\grug\year\1994.txt"
case(5)
          h="c:\grug\year\1995.txt"
case(6)
          h="c:\grug\year\1996.txt"
case(7)
          h="c:\grug\year\1997.txt"
case(8)
          h="c:\grug\year\1998.txt"
case(9)
          h="c:\grug\year\1999.txt"
case(10)
          h="c:\grug\year\2000.txt"
case(11)
          h="c:\grug\year\2001.txt"
case(12)
          h="c:\grug\year\2002.txt"
case(13)
          h="c:\grug\year\2003.txt"
case(14)
          h="c:\grug\year\2004.txt"
case(15)
          h="c:\grug\year\2005.txt"
case(16)
          h="c:\grug\year\2006.txt"
case(17)
          h="c:\grug\year\2007.txt"
case(18)
          h="c:\grug\year\2008.txt"
case(19)
          h="c:\grug\year\2009.txt"
case(20)
          h="c:\grug\year\2010.txt"
end select
open(k,file=h,status='old',form='formatted')
do j=1,n
read(i,*) (mbl(i,j,k),i=1,m)
end do
close(i)
end do
print *,mbl(1,1,1)
end

QQ截图20140403232542.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-4 00:34:07 | 显示全部楼层
program main
integer m,n,l
parameter(m=144,n=96,l=20)
character*8 filename(l)
real mbl(m,n)

open(10,file='c:\grug\years.txt')
do i=1,20
   read(10,*)filename(i)
endddo

do i=1,20
   open(11,file='c:\grug\year\'//filename(i))
   open(12,file='c:\grug\year\1991_2010.txt')
   read(11,*)((mbl(m,n),j=1,m),k=1,n)
   write(12,*)((mbl(m,n),j=1,m),k=1,n)
   close(11)
enddo
close(12)
stop
end   
      首先要将1991.txt,1992.txt,……2010.txt 这些文件号按顺序写到一个文本文档(如c:\grug\years.txt)里面,这样就把20个文件合并成一个数据文件,例如将其写成一行:1991.txt 1992.txt …… 2010.txt 或者一列 只要有序,怎样都行。
      你可以改写输出格式,让它有格式地输出(如将 write(12,*)((mbl(m,n),j=1,m),k=1,n)改写成: write(12,100)((mbl(m,n),j=1,m),k=1,n)  后面再加一行:100  format(144f8.2))。
然后打开文档'c:\grug\year\1991_2010.txt' 里面第一个数据就是你要的结果。也不知道你是不是想要这样的结果……


评分

参与人数 1金钱 +6 体力 +40 收起 理由
lqouc + 6 + 40 赞一个!

查看全部评分

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

新浪微博达人勋

发表于 2014-4-4 08:31:46 | 显示全部楼层
冰点 发表于 2014-4-4 00:34
program main
integer m,n,l
parameter(m=144,n=96,l=20)

他的文件名是有规律的,不用写那个文件名文档就可以直接循环读取。
write(filename,'("c:\grug\year\20",i2.2,".txt")')x
很感谢您的热心回复,不仅修改了程序还写了说明。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-4 08:47:21 | 显示全部楼层
lqouc 发表于 2014-4-4 08:31
他的文件名是有规律的,不用写那个文件名文档就可以直接循环读取。
write(filename,'("c:\grug\year\20" ...

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

新浪微博达人勋

 楼主| 发表于 2014-4-4 09:03:32 | 显示全部楼层

谢谢两位大神帮我改了程序,但是我想知道,我自己写的那个错误在哪里呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-4 09:12:06 | 显示全部楼层
lqouc 发表于 2014-4-4 08:31
他的文件名是有规律的,不用写那个文件名文档就可以直接循环读取。
write(filename,'("c:\grug\year\20" ...

谢谢两位大神帮我改了程序,但是我还是想知道,我自己写的那个错误在哪里呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2014-4-4 09:13:41 | 显示全部楼层
q863510557 发表于 2014-4-4 09:03
谢谢两位大神帮我改了程序,但是我想知道,我自己写的那个错误在哪里呢?

你没有发现你定义的h太短了么?需要查找文件的时候只出现了一个c???还有就是楼上说的,这么写貌似有点儿太累了,要是有100、1000甚至10000个程序,估计得哭了···
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-4 09:21:20 | 显示全部楼层
七楼正解
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2014-4-4 09:29:05 | 显示全部楼层

冰点大神,我按照我想要的改了一下你的,能帮我看一下,为啥显示结果是end of file during read 呢?
program main
integer m,n,l
parameter(m=144,n=96,l=20)
character*8 filename(l)
real mbl(m,n)

open(10,file='c:\grug\years.txt')
do k=1,l
   read(10,*)filename(i)
enddo

do k=1,l
   open(11,file='c:\grug\year\'//filename(i))
   open(12,file='c:\grug\year\1991_2010.txt')
   read(11,*)((mbl(m,n),i=1,m),j=1,n)
   write(12,*)((mbl(m,n),i=1,m),j=1,n)
   close(11)
enddo
close(12)
stop
end   
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-4 09:49:56 | 显示全部楼层
言深深 发表于 2014-4-4 09:13
你没有发现你定义的h太短了么?需要查找文件的时候只出现了一个c???还有就是楼上说的,这么写貌似有点 ...

我去,还真是谢谢各位啦!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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