【发布时间】:2015-01-24 11:18:35
【问题描述】:
我是 Fortran 90 的新用户。我正在学习如何编程。目前,我正在尝试创建一个程序来进行矩阵乘法。但是,我收到一个错误。
Program Matrix_Multiplication
Implicit None
Real, Dimension(2:2) :: A, B, C
Integer :: i, j, k
A = 0.0
B = 0.0
C = 0.0
do i = 1, 2
do j = 1, 2
Read (80, *) A
Read (90, *) B
Write (100, *) A, B
end do
end do
Call subC(A, B, C)
Write (110, *) C
End Program Matrix_Multiplication
Subroutine subC(A, B, C)
Implicit None
Real, Intent(IN) :: A, B
Integer :: i, j, k
Real, Intent(OUT) :: C
do i = 1, 2
do j = 1, 2
C = C(i, j) + (A(i, j)*B(j, i))
end do
end do
return
End Subroutine
编译时:
C(i, j) = (A(i, k)*B(k, j)) 1 错误:(1) 处的不可分类语句
【问题讨论】:
-
您需要将
subC中的参数声明为数组,就像在stackoverflow.com/q/28049298/3157076 中一样。 -
其他问题,
C使用未初始化。C=..语句是对整个数组的赋值,在语法上是有效的,但肯定不是你想要的 -
@Marcus 您编辑的目的是什么?您不应该纠正编辑中的编码错误,如果它是实质性的,它可能是一个答案的基础,否则是一个评论。如果您想让代码与错误消息兼容,那么您也没有成功,我不确定是否有一种方法可以在不进行太多更改的情况下做到这一点。
标签: fortran fortran90 matrix-multiplication