Fortran Coder

标题: 具有通用性的矩阵乘法,程序编好了,各位看看哪里出错了! [打印本页]

作者: xiaoxihaida    时间: 2017-8-23 17:27
标题: 具有通用性的矩阵乘法,程序编好了,各位看看哪里出错了!
[Fortran] 纯文本查看 复制代码
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
do l=1,l ! 錯在這裡
作者: xiaoxihaida    时间: 2017-8-23 23:21
chiangtp 发表于 2017-8-23 21:25
do l=1,l ! 錯在這裡

请问该怎么修改呢?
作者: xiaoxihaida    时间: 2017-8-23 23:38
chiangtp 发表于 2017-8-23 21:25
do l=1,l ! 錯在這裡

我改成do k=1,l  write(*,*)matrix(i,k)了还是不对,启动后输入各项值以后显示程序已退出,返回值为0(0x0)
作者: xiaoxihaida    时间: 2017-8-24 00:01
chiangtp 发表于 2017-8-23 21:25
do l=1,l ! 錯在這裡

谢谢你,我知道问题所在了!
作者: kyra    时间: 2017-9-1 17:49
写在主程序里,还能叫通用吗?
至少应该是独立的子程序。

PS:fortran语法里有matmul函数可以做矩阵乘法。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2