xiaoxihaida 发表于 2017-8-23 17:27:13

具有通用性的矩阵乘法,程序编好了,各位看看哪里出错了!

program main
    implicit 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

生成解决方案的时候没有错误,执行的时候会显示触发了一个断点,点击中止调试能得到结果,但是会显示存在越界矩阵的问题!麻烦帮我看一下哪一步需要修改的!谢谢!

chiangtp 发表于 2017-8-23 21:25:21

do l=1,l ! 錯在這裡

xiaoxihaida 发表于 2017-8-23 23:21:28

chiangtp 发表于 2017-8-23 21:25
do l=1,l ! 錯在這裡

请问该怎么修改呢?

xiaoxihaida 发表于 2017-8-23 23:38:37

chiangtp 发表于 2017-8-23 21:25
do l=1,l ! 錯在這裡

我改成do k=1,lwrite(*,*)matrix(i,k)了还是不对,启动后输入各项值以后显示程序已退出,返回值为0(0x0)

xiaoxihaida 发表于 2017-8-24 00:01:10

chiangtp 发表于 2017-8-23 21:25
do l=1,l ! 錯在這裡

谢谢你,我知道问题所在了!

kyra 发表于 2017-9-1 17:49:03

写在主程序里,还能叫通用吗?
至少应该是独立的子程序。

PS:fortran语法里有matmul函数可以做矩阵乘法。
页: [1]
查看完整版本: 具有通用性的矩阵乘法,程序编好了,各位看看哪里出错了!