主题:[讨论]请大家帮忙该一段小程序
有一组数据如下所示,第一列代表istep变化范围(1-5000),第二列 ia(1-30000),第三列ib(1-800),现在我想用一个三维数组H(istep,ia,ib)来标记这些数据,同一行数字定义的H=1,其他的H均为0.也就是说当istep=1时,ia=781,ib=455时H=1。我的主要目的就是能够将istep,ia,ib用一个函数联系起来,因为在程序后面要用这个函数作为进一步的判断条件。我写了一个程序:
program exam
implicit none
integer ia,ib,istep
integer ::h(5000,30000,800)
integer i
h=0
open (10,file='test.out')
do i=1,99999999
read(10,*,end=2,err=2) istep,ia,ib
h(istep,ia,ib)=1
enddo
2 continue
close(10)
do ia=1,30000
do ib=1,800
do istep=1,5000
h(istep)=h(istep,ia,ib)
enddo
do ntel=1,nsteps
if(h(ntel)/=0) then
进行后面的程序
-----------------
endif
enddo
enddo
enddo
end
但是现在的问题是,定义的三维数组h太大了,程序不能运行, 请大家帮忙看看应该怎么办?先谢了
数据:
1 758 22
1 820 245
1 2050 399
1 2587 232
1 15733 34
1 18193 65
1 20718 256
2 820 245
2 2050 399
2 2587 232
2 20251 125
3 758 22
3 820 245
3 1817 625
3 2050 399
3 16723 555
3 18193 65
3 20718 256
---
----
program exam
implicit none
integer ia,ib,istep
integer ::h(5000,30000,800)
integer i
h=0
open (10,file='test.out')
do i=1,99999999
read(10,*,end=2,err=2) istep,ia,ib
h(istep,ia,ib)=1
enddo
2 continue
close(10)
do ia=1,30000
do ib=1,800
do istep=1,5000
h(istep)=h(istep,ia,ib)
enddo
do ntel=1,nsteps
if(h(ntel)/=0) then
进行后面的程序
-----------------
endif
enddo
enddo
enddo
end
但是现在的问题是,定义的三维数组h太大了,程序不能运行, 请大家帮忙看看应该怎么办?先谢了
数据:
1 758 22
1 820 245
1 2050 399
1 2587 232
1 15733 34
1 18193 65
1 20718 256
2 820 245
2 2050 399
2 2587 232
2 20251 125
3 758 22
3 820 245
3 1817 625
3 2050 399
3 16723 555
3 18193 65
3 20718 256
---
----