用fortran编写将3个数组加成一个数组的程序,数据在txt文件里(160列60行的记录降雨的数字)
programhahhahaintegert,m,ireal,dimension(1:180,1:160)::dreal,dimension(1:60,1:160)::a...
program hahhaha
integer t,m,i
real,dimension(1:180,1:160)::d
real,dimension (1:60,1:160)::a,b,c
open(12,file='f:\h500\exam4\data\r1606.txt')
read(12,*)((a(t,m),m=1,160),t=1,60)
open(12,file='f:\h500\exam4\data\r1607.txt')
read(12,*)((b(t,m),m=1,160),t=1,60)
open(12,file='f:\h500\exam4\data\r1608.txt')
read(12,*)((c(t,m),m=1,160),t=1,60)
do m=1,160
i=0
do while (i<60)
d(i,m)=a(t,m)
i=i+1
end do
do while (i<120)
d(i,m)=b(t+60,m)
i=i+1
end do
do while (i<180)
d(i,m)=c(t+120,m)
i=i+1
end do
end do
end
合成后的数组列数不变,行数变成里原来的3倍,eg原数组a(1,1,),b(1,1),c(1,1)合成后的数组d(i,m)为d(1,1)=a(1,1)d(2,1)=b(1,1) d(3,1)=c(1,1).我编得这个程序执行的时候出现forrt severe 161的错误,求大神帮忙看下哪里需要改正,怎么改,谢谢哦 展开
integer t,m,i
real,dimension(1:180,1:160)::d
real,dimension (1:60,1:160)::a,b,c
open(12,file='f:\h500\exam4\data\r1606.txt')
read(12,*)((a(t,m),m=1,160),t=1,60)
open(12,file='f:\h500\exam4\data\r1607.txt')
read(12,*)((b(t,m),m=1,160),t=1,60)
open(12,file='f:\h500\exam4\data\r1608.txt')
read(12,*)((c(t,m),m=1,160),t=1,60)
do m=1,160
i=0
do while (i<60)
d(i,m)=a(t,m)
i=i+1
end do
do while (i<120)
d(i,m)=b(t+60,m)
i=i+1
end do
do while (i<180)
d(i,m)=c(t+120,m)
i=i+1
end do
end do
end
合成后的数组列数不变,行数变成里原来的3倍,eg原数组a(1,1,),b(1,1),c(1,1)合成后的数组d(i,m)为d(1,1)=a(1,1)d(2,1)=b(1,1) d(3,1)=c(1,1).我编得这个程序执行的时候出现forrt severe 161的错误,求大神帮忙看下哪里需要改正,怎么改,谢谢哦 展开
1个回答
展开全部
这个错误的意思是数组越界。
你做循环的时候循环变量是i,但是a,b,c数组里的循环变量是t,而t没有随着循环变化。这是其一;
你数组越界的原因是把i=i+1放到了数组赋值语句的后面,第一次循环的时候i=0,而你定义的d数组的第一维是从1开始变化的,并没有d(0,1)这个元素,所以越界。
我感觉你这个程序还有很大改进的余地。
你做循环的时候循环变量是i,但是a,b,c数组里的循环变量是t,而t没有随着循环变化。这是其一;
你数组越界的原因是把i=i+1放到了数组赋值语句的后面,第一次循环的时候i=0,而你定义的d数组的第一维是从1开始变化的,并没有d(0,1)这个元素,所以越界。
我感觉你这个程序还有很大改进的余地。
更多追问追答
追问
1,怎样使t随着循环呢?
2,我试了试把i=i+1放在里赋值语句前面可是还是数组超了。。。
追答
跪了- -你仔细看看啊。其实这个循环只用i就可以解决了,t根本没有必要存在。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询