爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7202|回复: 11

[求助] 已解决 二维数组读取时,外循环不运行

[复制链接]

新浪微博达人勋

发表于 2012-12-29 09:40:08 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wutongyu 于 2012-12-30 10:08 编辑

在读取一个(71,73)的二维数组过程中,程序只执行内循环,外循环不执行,自己写的代码如图,不知道哪儿错了,求指导
1.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-12-29 10:53:34 | 显示全部楼层
a,b没赋初值,读和写的循环最好分开写,我是这样想的,你试试
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2012-12-29 11:02:13 | 显示全部楼层
楼主如何判断外层循环没有运作?
write的时候format和定义需要相匹配,a默认是实型的,写成I型的不妥,再者下面的3X···建议修改,另外,status语句行去掉···
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-29 11:24:07 | 显示全部楼层

额,对,从新看了下数据,数据格式是这样的
33    32   37    33    33    33  .....
33    33   33    33    33    38   ....
20    50   33    33    33    74 ......
总共71行,73列,我自己写的程序只能读出来第一列,比如上面的33,33,20.。。。
这是写的完整代码,不知哪儿出的问题,求指导一下
program ex19951
implicit none
integer,parameter::inputfileid=10,outputfileid=11
integer m,n,t,i,j,k
character(len=80)::inputfile,outputfile
parameter(m=71,n=73)
integer x(m,n)
integer a
real b
a=-180
b=90.0
inputfile="0010.txt"
outputfile="1.txt"

open(10,file=inputfile,status='old')
open(11,file=outputfile,status="replace")

do t=1,71
do j=1,73
read(10,*)(x(t,j))
b=b-2.5
a=a+5
write(11,"(I8,3XF5.1,I6,I6,I6)")a,b,(x(1,j)),j,t
end do
end do
stop
end program  

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

新浪微博达人勋

 成长值: 0
发表于 2012-12-29 11:53:26 | 显示全部楼层
wutongyu 发表于 2012-12-29 11:24
额,对,从新看了下数据,数据格式是这样的
33    32   37    33    33    33  .....
33    33   33  ...

如果是这样就比较容易理解了···
read的时候该用隐循环,具体如下
do i=1,71
read(1,*)(x(i,j),j=1,73)
enddo
语句的意思就是读取71行,每行读取73个···

你原来的程序应该还会报错的,错误应该是end of read
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-29 14:20:14 | 显示全部楼层
言深深 发表于 2012-12-29 11:53
如果是这样就比较容易理解了···
read的时候该用隐循环,具体如下
do i=1,71

嗯,你猜的太对了,就是运行时DOS窗口弹出这个错误,你说的改正方法可以,不过不能逐个输出啊,我想在每个输出的数前面加上经纬度,a,b分别表示的就是经纬度。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2012-12-29 17:23:52 | 显示全部楼层
wutongyu 发表于 2012-12-29 14:20
嗯,你猜的太对了,就是运行时DOS窗口弹出这个错误,你说的改正方法可以,不过不能逐个输出啊,我想在每个 ...

可以逐个输出的。可以用i,j*间隔来输出的···输出还是用
do i=1,m
do j=1,n
write(2,"(2f12.2,f12.4)") i*2.5,j*2.5,x(i,j)
enddo
enddo
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-29 21:07:27 | 显示全部楼层
言深深 发表于 2012-12-29 17:23
可以逐个输出的。可以用i,j*间隔来输出的···输出还是用
do i=1,m
do j=1,n

好滴,十分感谢,问题解决啦,哈哈
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2012-12-29 21:30:39 | 显示全部楼层
wutongyu 发表于 2012-12-29 21:07
好滴,十分感谢,问题解决啦,哈哈

建议你查看一下,输出的经纬度有可能对应不上,需要做相应的修改,比如90-j*2.5等等···具体原因就是和之前数据存放的方式有关,这些细节想一下就明白了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-12-29 22:18:40 | 显示全部楼层
言深深 发表于 2012-12-29 21:30
建议你查看一下,输出的经纬度有可能对应不上,需要做相应的修改,比如90-j*2.5等等···具体原因就是和 ...

嗯,经纬度的问题已经解决啦
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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