Fortran Coder

查看: 15650|回复: 1
打印 上一主题 下一主题

[求助] forrrt1:severe<408>数组超限怎么整呀

[复制链接]

20

帖子

8

主题

0

精华

熟手

F 币
126 元
贡献
73 点
跳转到指定楼层
楼主
发表于 2021-1-13 10:50:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
01program co2h20n2
02implicit none
03integer,parameter::M=2966297,N=2,L=1227853
04real ::cob(3000001,2)
05real::co2(L,N)
06real::h2o(M,N)
07real ::k
08integer::i,j,q,p,count
09 
10 
11open(10,file='T_1800_P_25.0_CO2Mol_0.1_N2mol_0.9.data')
12 do i=1,1227852
13 
14    read(10,*)co2(i,:)
15 
16 end do
17 close(10)
18 
19 
20 open(11,file='T_1800_P_25.0_H2OMol_0.1_N2mol_0.9.data')
21 do i=1,2966296
22 
23    read(11,*)h2o(i,:)
24    
25 end do
26 close(11)
27 
28 
29 q=1
30 count=1
31 k=1000
32 do k=0,30000,0.01
33     do p=count,1227852
34      if (k-co2(p,1)<0)then
35             cycle
36      else if (k-co2(p,1)>0.01)then
37      
38     else
39        cob(q,2)=cob(q,2)+co2(p,2)  
40        count=count+1
41      end if
42     end do
43     cob(q,1)=k
44    q=q+1
45     
46  end do 
47 
48 
49 
50 
51  q=1
52   count=1
53 do k=0,30000,0.01
54  do p=count,2966296
55     if (k-co2(p,1)<0)then
56    cycle
57       else if (k-co2(p,1)>0.01)then
58       else
59        cob(q,2)=cob(q,2)+co2(p,2)
60             count=count+1
61 
62       end if
63  end do
64 
65  q=q+1
66 end do
67 
68 
69 open(12,file='hecheng.txt')
70  do i=1,3000000
71 
72    write (12,*)cob(i,:)
73 
74  end do
75  close(12)
76  end 

微信图片_20210113104935.jpg (148.68 KB, 下载次数: 345)

微信图片_20210113104935.jpg

1609989679(1).jpg (57.45 KB, 下载次数: 401)

数组1

数组1

1609989696(1).jpg (49.4 KB, 下载次数: 342)

数组2

数组2
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2035

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1658 元
贡献
711 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2021-1-13 10:59:54 | 只看该作者
错误提示仔细看看,英文翻译一下。
第57行,数组越界

co2 大小是 1227853,但p循环到 2966296

此外,既然你定义了 L 和 M,为什么代码里还要写一大堆 2966296 呢?这样你改这些数字多累啊??为何不写成 do p = count , M-1 呢?

do k=0,30000,0.01
  do p=count,2966296
     if (k-co2(p,1)<0)then
    cycle
       else if (k-co2(p,1)>0.01)then
       else
        cob(q,2)=cob(q,2)+co2(p,2)
             count=count+1
       end if
  end do

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2025-3-13 19:11

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

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