Arrays 简单程序:向量的平方模
我正在为向量的平方模写一个简单的程序,你能帮我吗 对于fortran 2008的初学者,我没有发现任何有用的东西,特别是在数组之间的这些简单操作中Arrays 简单程序:向量的平方模,arrays,fortran,operation,Arrays,Fortran,Operation,我正在为向量的平方模写一个简单的程序,你能帮我吗 对于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, d
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
错误:函数“平方_模块”在(1)处的返回类型不匹配(未知/实(4))
传播者。f08:38:12:
module2=squared_module(m)
1
错误:(1)处的函数“squared_module”没有隐式类型您有两种选择。您可以在函数声明中添加
module2
作为结果变量
function squared_module(n) result(module2)
您可以将函数重写为
function squared_module(n)
integer :: squared_module
integer, dimension(3), intent(in) :: n
squared_module=n(1)**2+n(2)**2+n(3)**2
end function
请注意,您的函数
squared_模块
可以由调用内在例程dot_product
来替换,例如dot_product(m,m)
。这里有两个问题:1)函数尚未声明,需要声明(因为隐式无
)-您可以使用显式(更好)或隐式接口来实现这一点;2) 您没有正确定义函数结果(您有一个局部变量module2
您正在定义而不是正确的函数结果squared_module
。这些重复的问题解决了它们之间的每一点。这是正确的,但没有解决问题的要点:在主pr中没有函数squared_module
的声明Gram。函数结果没有被正确定义是相关的,但不是重点。@francescalus我可以修改什么?我是初学者,你能为我正确编写吗?谢谢!@francescalus,是的,我错过了隐式声明错误。OP可以通过向主程序。