| 查看: 1767 | 回复: 13 | |||
[交流]
【求助】50金币求大家帮忙改一段程序
|
|||
|
有一组数据如下所示,第一列代表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 --- ---- ---- |
» 猜你喜欢
售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急
已经有5人回复
售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急
已经有5人回复
售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急
已经有7人回复
上海工程技术大学激光智能制造课题组招收博士研究生
已经有4人回复
售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急
已经有3人回复
售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急
已经有4人回复
售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急
已经有4人回复
售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急
已经有4人回复
售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急
已经有5人回复
售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急
已经有4人回复
» 本主题相关价值贴推荐,对您同样有帮助:
【急】请大家帮忙看一下这个offer是否合乎要求,新手散光所有金币求助~~
已经有12人回复
帮忙修改一段我的翻译,好难翻啊555
已经有4人回复
也请高人指点,帮忙看看每位评委的意见是什么?(50金币,回帖1金币)
已经有84人回复
帮忙修改一段翻译!谢谢!
已经有3人回复
求高手帮忙改一下英文摘要
已经有12人回复
【求助】撒点金币请大家帮忙出主意,回国都带什么礼物啊
已经有20人回复
急求,30分钟内翻译一段文字(药学),30分钟内完成6金币再追加50金币
已经有1人回复
再求一段英译中,在线等,急,50金币
已经有5人回复
【求助】10金币请帮忙修改一下MATLAB程序
已经有9人回复
» 抢金币啦!回帖就可以得到:
坐标北京,诚征女友,奔结婚,非诚勿扰!
+5/220
急招科研助理/博士后
+2/126
【半导体薄膜代工】ALD/CVD/磁控溅射/热蒸发全工艺
+1/92
中科院化学所韩布兴院士团队诚聘光催化、光酶催化、光电催化领域博士后1-2名
+1/77
各位大佬帮忙分析一下面上意见,是否上会?几个A、B、C?
+1/74
江南大学(211)招收2027年低空技术与工程、土木工程专业推荐免试研究生
+2/64
山东征女友,坐标济南
+1/37
石河子大学211双一流学科分子筛等多孔材料与生物质资源化利用方向招2027级推免生
+1/31
坐标天津,诚征女友,希望遇到有缘之人。
+1/21
中国科大-合肥国家实验室冷原子量子网络团队招聘启事
+2/16
深圳大学2027级光电信息工程/物理学研究生推免
+1/16
招收2027年-申请考核博士生-仿生材料/生物能源方向
+1/11
沙特KFUPM全固态锂硫电池方向 Postdoctoral Fellow,2026年9月30日截止
+1/10
无人机方向 博士后与青年教师招聘公告
+1/7
【特刊征稿】BM临床诊断与治疗生物功能材料专题(Scopus、DOAJ 收录)
+1/5
【生物材料与生物打印专题征稿】Scopus期刊,免APC
+1/5
北理工集成电路杰青团队 | 诚招科助理
+1/4
【牙科生物材料特刊征稿】对牙科方向友好(Scopus、DOAJ收录的正规国际期刊)
+1/4
第一次独立答复专利审查意见,才发现这活跟毕业答辩是一个套路
+1/4
北京理工大学-集成电路与电子学院杰青团队-招博士后
+1/3
4楼2011-03-28 23:54:35
|
以我的第一行数据 1 758 22 为例,1代表istep,758代表ia,22代表ib。 我想用函数将istep,ia,ib联系起来,只有当取我数据中一行上的数字时,定义的函数h=1,其他的h均为0.以第一行为例, istep=1,ia= 758,ib=22时,h=1.或者用多个函数也行,只要能完成后面循环中判断( if(h(ntel)/=0) then)就行。 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 |
5楼2011-03-29 03:05:47
6楼2011-03-29 15:16:15
|
nstep可以写成5000, 对我的文件(new_total.out)的说明: 文件的格式为默认写入格式。 第一列代表ia,第二列ib,第三列istep(变化范围1-5000) 文件所在网址:http://good.gd/1078236.htm [ Last edited by astringent on 2011-3-30 at 05:47 ] |
7楼2011-03-30 05:44:34
8楼2011-03-30 09:01:35
|
可能是我的表达有问题。 我的数据: 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 现有一数据文件test.out,文件结构:第一列istep,第二列ia,第三列ib。istep的变化范围是从1到5000,ia的变化范围是从1到30000,ib的变化范围是从1到800。定义一个三维数组h(5000,30000,800),当h的三维取文件中一行数据时,h=1,否者h=0。我的想法是:从test.out文件读入数据,每读一行(即istep,ia,ib),就将相应的h(istep,ia,ib)赋值为1.相应的程序我是这样写的: 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) 当读完文件,就有了三维数组h中每个元素的值(0或1),然后用h是否等于0来做判断条件,进行下面的计算。相应的程序为 do istep=1,5000 do ia=1,30000 do ib=1,800 if (h(istep,ia,ib)/=0) then 进行计算--- endif enddo enddo enddo 但是如果像我这样定义三位数组的话,需要的内存太大,程序不运行,所以想请大家帮忙看看,如何修改程序,才能使程序执行判断条件后面的计算。举个例子,当istep=1,ia,ib只有取文件中的值也就是下面这些数据对应h才等于1,可以进行后面的计算。取其他的值时h均为0,不进行后面的计算。 1 758 22 1 820 245 1 2050 399 1 2587 232 1 15733 34 1 18193 65 1 20718 256 |
9楼2011-03-31 01:08:16
10楼2011-03-31 07:12:45
★ ★
微尘、梦想(金币+2): 谢谢回复…… 2011-04-07 17:39:19
微尘、梦想(金币+2): 谢谢回复…… 2011-04-07 17:39:19
说实话,你解释了那么多还是没有看懂 ![]() ![]() ![]() ![]() 我的理解是这样的: 对于你的 test.out 来说,你想进行下面的计算,前提是,ia 和 ib 是来自于同一个 istep 的,也就是说,如果 istep == 1,那么 ia 和 ib 应该是: 1 758 22 1 820 245 1 2050 399 1 2587 232 1 15733 34 1 18193 65 1 20718 256 如果 istep == 2,那么下面的数据参加计算: 2 820 245 2 2050 399 2 2587 232 2 20251 125 是这样的吗? |
11楼2011-03-31 10:11:20
12楼2011-04-01 01:43:51
13楼2011-04-01 01:51:45
14楼2011-04-01 09:48:18
简单回复
纳米材料7532楼
2011-03-23 07:23
回复
astringent(金币+5): 2011-04-25 19:59:50
帮
!
zyxme3楼
2011-03-23 08:20
回复










回复此楼
