具有通用性的矩阵乘法,程序编好了,各位看看哪里出错了!
program mainimplicit none
integer::m,n,l
integer,allocatable::matrixA(:,:)
integer,allocatable::matrixB(:,:)
integer,allocatable::matrixC(:,:)
integer::i,j,k
read(*,*) m
read(*,*) n
read(*,*) l
allocate(matrixA(m,n))
allocate(matrixB(n,l))
allocate(matrixC(m,l))
write(*,*)"matrixA"
do i=1,m
do j=1,n
write(*,*) i,j
read(*,*)matrixA(i,j)
end do
end do
write(*,*)"matrixB"
do j=1,n
do k=1,l
write(*,*) j,k
read(*,*)matrixB(j,k)
end do
end do
write(*,*)"matrixC=matrixA*matrixB"
matrixC= matmul(matrixA,matrixB)
do i=1,m
do l=1,l
write(*,*)matrixC(i,l)
end do
end do
stop
end
生成解决方案的时候没有错误,执行的时候会显示触发了一个断点,点击中止调试能得到结果,但是会显示存在越界矩阵的问题!麻烦帮我看一下哪一步需要修改的!谢谢!
do l=1,l ! 錯在這裡 chiangtp 发表于 2017-8-23 21:25
do l=1,l ! 錯在這裡
请问该怎么修改呢? chiangtp 发表于 2017-8-23 21:25
do l=1,l ! 錯在這裡
我改成do k=1,lwrite(*,*)matrix(i,k)了还是不对,启动后输入各项值以后显示程序已退出,返回值为0(0x0) chiangtp 发表于 2017-8-23 21:25
do l=1,l ! 錯在這裡
谢谢你,我知道问题所在了! 写在主程序里,还能叫通用吗?
至少应该是独立的子程序。
PS:fortran语法里有matmul函数可以做矩阵乘法。
页:
[1]