找回密码
 注册
查看: 2553|回复: 5

请教一个fortran问题如何解决?

[复制链接]
发表于 2004-1-29 19:39:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在初学编程时,遇到下列难题,我想实现如下功能时:
character*20 file
read(*,*)file
x=1.0
y=real('file')
write(*,*)y
end
这样若我输入字符串'sin(x)'或其他函数名时,就会计算出Y=sin(1.0)值或相应的函数值来,(为了表示意思清楚,上述存在的语法错误请谅解),我发现要实现这一点对我而言,非常困难,请问能有什么好的办法解决它?.
非常您的感谢帮助.
发表于 2004-2-29 21:02:07 | 显示全部楼层

请教一个fortran问题如何解决?

据我所知Fortran里没有像matlab中的eval函数,可以把字符串转换为函数执行。如果一定要实现,只有自己写一个函数来辨别表达式,不过好像很难。你换个方法,比如列出函数执行的时候选择要简单很多。或者你用matlab写程序实现起来就容易了。
发表于 2004-3-7 09:14:58 | 显示全部楼层

请教一个fortran问题如何解决?

办法总是有的,可惜程序没这么简单了,不知道你是要程序简单,还是只要实现功能就好。
发表于 2004-3-7 18:52:14 | 显示全部楼层

请教一个fortran问题如何解决?

下面引用由kinggarden2004/01/29 07:39pm 发表的内容:
在初学编程时,遇到下列难题,我想实现如下功能时:
character*20 file
read(*,*)file
x=1.0
...
你的这个调用在Fortran的语法上不能实现,sin函数是他的库函数,而一旦你定义'sin(x)'
为字符串,那么其中的x就不能作为变量被赋值,所以你的程序在逻辑上好像行不通(至少Fortran不行吧)
发表于 2004-3-8 04:07:33 | 显示全部楼层

请教一个fortran问题如何解决?

看了半天才明白,想法有点天真啊.还是把fortran和matlab弄混了?
用fortran想达到那样的目的,应该很复杂.因为matlab的这种功能都是调用maple来实现的.
发表于 2004-5-24 18:41:21 | 显示全部楼层

请教一个fortran问题如何解决?

很久没上,来的晚了,呵呵
   可以考虑将函数名作位变量传递啊(在传人的子程序里将它
声名为外部过程external就行了):
subroutine sub1(fun_name,x,result)
  real :: x,result
  external fun_name  
    result = fun_name(x)
    return
end subroutine sub1
program main
  real :: result
  call sub1(sin,1.0,result)
end program main
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表