Fortran Coder

查看: 178|回复: 2

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

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
21 元
贡献
8 点
发表于 2020-10-26 21:51:54 | 显示全部楼层 |阅读模式
这个是咋回事呀,我检查数组定义是没有任何问题的,新...
附代码:
[Fortran] 纯文本查看 复制代码
  program main
    implicit none 
    real a
    dimension a(3,4)
    print*,"请输入增广矩阵:"
    read(*,*) a
    call gs(3,a)
    pause
    end
    subroutine gs(n,m)
  !n为线性方程组元数,m为初始增广矩阵.
implicit none
integer i,j,k,p,n
real max,m,t,x,s,l
dimension x(n),m(n,n+1),l(n,n+1)!m为初始增广矩阵,l 为化简消去过程中的增广矩阵
do k=1,n
     !选主元 
     max=abs(m(k,k))
     do i=k+1,n
         if(abs(m(i,k))>=max)then
             max=abs(m(i,k))
             p=i
         endif
     enddo
     if(p/=k)then
      !交换增广矩阵的第k行和第p行
         do j=k,n+1
            t=m(k,j)
            m(k,j)=m(p,j)
            m(p,j)=t
         enddo
     endif
     !矩阵化简
     if(k<=n) then
    do  i=k+1,n
    l(i,k)=m(i,k)/m(k,k)
    do j=k,n+1
        m(i,j)=m(i,j)-l(i,k)*m(k,j)
        enddo
    enddo
     endif
enddo
continue
!回代
x(n)=m(n,n+1)/m(n,n)
do i=n-1,1,-1
     s=m(i,n+1)
     do j=i+1,n
      s=s-x(j)*m(i,j)
     enddo
     x(i)=s/m(i,i)
end do
    do i=1,n
    write(*,10) x(i)
10  format(1x,f5.2)    
    enddo
    return
end  
1.png
回复

使用道具 举报

74

帖子

2

主题

0

精华

专家

F 币
578 元
贡献
271 点

规矩勋章

发表于 2020-10-27 12:23:36 | 显示全部楼层
输入值加小数点。如下:
10.0 5.0 -3.0

2

帖子

1

主题

0

精华

新人

F 币
21 元
贡献
8 点
 楼主| 发表于 2020-10-27 16:19:31 | 显示全部楼层
风平老涡 发表于 2020-10-27 12:23
输入值加小数点。如下:
10.0 5.0 -3.0

好的,我试试
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2020-12-5 09:57

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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