【发布时间】:2013-10-09 20:29:56
【问题描述】:
我正在处理 Fortran 90 作业,在学习如何使用子例程和函数时遇到了很多问题,我希望有人能帮助我。如果不是很明显,我对 FORTRAN 非常陌生,并且对 C 和 Java 等语言更加熟悉。
无论如何,这就是我必须做的事情:用户选择他们想要做的事情:加、减、乘或转置两个矩阵。我为此使用了一个选择案例,效果很好。但是,我显然不想重复相同的代码以四次填充两个矩阵,因此我试图将其设为单独的函数。理想情况下,我想做这样的事情:
integer matrix1(11,11), matrix2(11,11)
integer rows1,cols1,rows2,cols2,i,j
case (1)
matrix1 = fillmatrix(rows1,cols1)
matrix2 = fillmatrix(rows2,cols2)
.
.
.
function fillmatrix(rows,columns)
integer input
read *,rows,columns
do i = 1, rows
do j = 1, columns
fillmatrix(i,j) = read *,input
end do
end do
end
有没有办法做这样的事情?我有没有说清楚,因为有时我很难说出我的意思。
或者这可能吗?
matrix1 = fillmatrix(rows1)cols1)
function fillmatrix(rows,columns)
integer input,matrix(11,11)
//fill matrix
return matrix
end
【问题讨论】:
-
您是否仅限于 FORTRAN 77,还是可以使用更新的标准?从 Fortran 90 开始,您可以使用返回数组的函数。
-
嗯,作业文件没有说我们必须使用f77,所以我可能会使用f90,但是我根本没有用fortran 90做任何事情,所以我不知道是什么否则我需要改变
-
哦,我刚刚注意到...
select caseIS Fortran 90 ;-) 见Wikipedia -
哇。我不知道 Fortran 90 是什么选择案例...显示了我的关注程度。如果我把他们弄得那么糊涂,我显然是在写草率的代码,哈哈。
标签: function matrix fortran subroutine