我遇到了一个fortran 77项目的问题(是的,我知道它很古老,但我的教授要求我们以固定形式的程序进行编程)
所以我遇到了一个子程序的问题,它应该读取一个N维Vector,它应该是一个列。这个代码看起来像:(它仍然是我的作业的早期草稿,只是试图找出如何调用子程序,如果我可以编译这个问题,其余代码将完成)
Program gauss
implicit double precision (A-H,O-Z)
!he directly asked for implicit typing
call Vread(V(N))
end program
Subroutine Vread(V,N)
Implicit double precision (A-H,O-Z)
dimension V(N)
read(*,*) (V(I),I=1,N)
return
end
所以我的问题是:如果我尝试用gfortran gauss.exe -o gauss.f
编译它,编译器将返回错误:
Type mismatch argument 'n' at(1); passed REAL(8) to Integer(4)
答案 0 :(得分:3)
在您的主程序中编写
call Vread(V(N)) ! this passes a rank-1 vector with N elements
但您的子程序已声明
Subroutine Vread(V,N) ! this requires 2 arguments
将通话更改为
call Vread(V,N)
让你的教授知道21世纪到了一个时代。另请注意,可以以固定格式编写21C Fortran。它没有多大意义,但可以让你在使用更现代的语言版本的同时发挥作用。
!he directly asked for implicit typing
我相信您所在的司法管辖区不直接支付您的学费。如果您支付费用然后需要更多,您就会被骗。