我想在键入时创建一个函数并将其作为函数读取。例如,如果我输入 x+y,那么 f(x,y)=x+y。这可能吗?以下代码不起作用。
real function f(x,y)
real x,y
write(6,*) "type f(x,y)"
read*, f
return
end
我想在键入时创建一个函数并将其作为函数读取。例如,如果我输入 x+y,那么 f(x,y)=x+y。这可能吗?以下代码不起作用。
real function f(x,y)
real x,y
write(6,*) "type f(x,y)"
read*, f
return
end
是的,你可以,但你的语法有点不对劲。
PROGRAM READFUNC
REAL x,y,F,res
res = F(x,y)
WRITE(*,*) res
END
REAL FUNCTION F(x,y)
REAL x,y
WRITE (*,*) "Type in"
READ (*,*) F
RETURN
END
请注意,我用 gfortran 编译了这个,所以我不确定它是否使用任何 F90+ 扩展。
编辑阅读您的编辑后,我发现这不是您想要的;你想要某种 eval/parser。一般来说,这不是一件小事。您将不得不进行某种令牌解析工作。
但是,有一些已经编写好的库可以为您执行此操作。
有关在哪里寻找更多研究的示例,请参阅本文。
F(X,Y)=X+Y
99 READ(*,*)X,Y
WRITE(*,*)F(X,Y)
GO TO 99
您输入 3 4 或 3,4 并输出 7