Fortran Coder

查看: 12038|回复: 2
打印 上一主题 下一主题

[求助] fortran数组越界求助,谢谢

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
21 元
贡献
8 点
跳转到指定楼层
楼主
发表于 2020-10-26 21:51:54 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
这个是咋回事呀,我检查数组定义是没有任何问题的,新...
附代码:
[Fortran] 纯文本查看 复制代码
01  program main
02    implicit none
03    real a
04    dimension a(3,4)
05    print*,"请输入增广矩阵:"
06    read(*,*) a
07    call gs(3,a)
08    pause
09    end
10    subroutine gs(n,m)
11  !n为线性方程组元数,m为初始增广矩阵.
12implicit none
13integer i,j,k,p,n
14real max,m,t,x,s,l
15dimension x(n),m(n,n+1),l(n,n+1)!m为初始增广矩阵,l 为化简消去过程中的增广矩阵
16do k=1,n
17     !选主元
18     max=abs(m(k,k))
19     do i=k+1,n
20         if(abs(m(i,k))>=max)then
21             max=abs(m(i,k))
22             p=i
23         endif
24     enddo
25     if(p/=k)then
26      !交换增广矩阵的第k行和第p行
27         do j=k,n+1
28            t=m(k,j)
29            m(k,j)=m(p,j)
30            m(p,j)=t
31         enddo
32     endif
33     !矩阵化简
34     if(k<=n) then
35    do  i=k+1,n
36    l(i,k)=m(i,k)/m(k,k)
37    do j=k,n+1
38        m(i,j)=m(i,j)-l(i,k)*m(k,j)
39        enddo
40    enddo
41     endif
42enddo
43continue
44!回代
45x(n)=m(n,n+1)/m(n,n)
46do i=n-1,1,-1
47     s=m(i,n+1)
48     do j=i+1,n
49      s=s-x(j)*m(i,j)
50     enddo
51     x(i)=s/m(i,i)
52end do
53    do i=1,n
54    write(*,10) x(i)
5510  format(1x,f5.2)   
56    enddo
57    return
58end

1.png (21.86 KB, 下载次数: 326)

1.png
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2

帖子

1

主题

0

精华

新人

F 币
21 元
贡献
8 点
板凳
 楼主| 发表于 2020-10-27 16:19:31 | 只看该作者
风平老涡 发表于 2020-10-27 12:23
输入值加小数点。如下:
10.0 5.0 -3.0

好的,我试试

213

帖子

2

主题

0

精华

宗师

F 币
2142 元
贡献
875 点

规矩勋章

沙发
发表于 2020-10-27 12:23:36 | 只看该作者
输入值加小数点。如下:
10.0 5.0 -3.0
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2025-5-2 12:21

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

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