【发布时间】:2019-09-03 21:37:29
【问题描述】:
我正在为向量的平方模编写一个简单的程序,你能帮帮我吗?
对于 fortran 2008 的初学者,我没有发现任何有用的东西,尤其是在数组之间的这些简单操作中。
function squared_module(n)
integer :: module2
integer, dimension(3), intent(in) :: n
module2=n(1)**2+n(2)**2+n(3)**2
end function
program propagator
implicit none
integer, dimension(3) :: m
integer :: module2
write (*,*) "Give me a vector"
read (*,*) m
module2=squared_module(m)
print*, "Module squared is ", module2
end program propagator
我得到的错误:
传播者.f08:38:26:
module2=squared_module(m)
1
错误:函数“squared_module”在 (1) 处的返回类型不匹配 (UNKNOWN/REAL(4)) 传播者.f08:38:12:
module2=squared_module(m)
1
错误:(1) 处的函数“squared_module”没有隐式类型
【问题讨论】:
-
请注意,您的函数
squared_module可以替换为对内部例程dot_product的调用,例如dot_product(m,m)。 -
这里有两个问题:1)函数没有被声明需要(因为
implicit none)——你可以使用显式(更好)或隐式接口来做到这一点; 2)您没有正确定义函数结果(您定义了一个局部变量module2,而不是正确的函数结果squared_module。这些重复的问题解决了它们之间的每一点。