Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 简单程序:向量的平方模_Arrays_Fortran_Operation - Fatal编程技术网

Arrays 简单程序:向量的平方模

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

我正在为向量的平方模写一个简单的程序,你能帮我吗

对于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
错误:函数“平方_模块”在(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可以通过向主程序。