设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
如何让程序按一个表达式多次计算?(其实题目很难,内详) ...
返回列表
查看:
1005
|
回复:
9
如何让程序按一个表达式多次计算?(其实题目很难,内详)
[复制链接]
fingster
fingster
当前离线
积分
900
IP卡
狗仔卡
发表于 2003-9-1 13:37:01
|
显示全部楼层
|
阅读模式
我的意思是:
用户输入一个表达式,比如
f(x,y)=3x+4x*y
然后输入x,y的值,程序进行计算。
如果只计算一次,当然很简单,但如果需要计算多次,每次的工作量又很大,那该怎么办?
计算第一次的时候,我们的程序已经进行了适当的分析,再计算时应该可以略去这些分析了。比如略去转化为后缀表达式的分析。
问题是如何让程序略去这些分析,直接调用分析的结果来计算?
或者说,能不能在程序的执行过程中分析产生这样一个函数
f(x,y)
{
return 3*x+4*x*y;
}
复制代码
并调用它来计算?
不知道我说明白了没有。大家帮忙啊!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
liuspider
liuspider
当前离线
积分
1280
IP卡
狗仔卡
发表于 2003-9-1 14:41:38
|
显示全部楼层
分析产生这个函数后,如果是C的,你还要编译他才能用啊!
回复
支持
反对
使用道具
举报
显身卡
kensta
kensta
当前离线
积分
4
IP卡
狗仔卡
发表于 2003-9-1 15:23:49
|
显示全部楼层
偷懒一下
/* a.c */
main()
{
char str[100];
int i;
scanf("%s",str);
for(i=0;str
&& str
!='=';i++);
printf("main(){\nint x,y;\nscanf(\"%d%d\");\nprintf(\"%d\n\",%s);}",str+i+1);
}
/* a.bat 我shell不熟,用bat表示个意思罢了 */
a.exe > b.c
gcc b
b
这样,执行a.bat就可以了。
真的动态的处理字符串也不是不行,不过麻烦些,起码得词法分析,然后再生成一个函数的表示(这个自定义了,差不多就是一个结构体的链表,表示对应的输入参数、区别不同的项、因子甚至指数、幂...好复杂...晕了),然后一个处理这个链表的函数把输入的变量表代入这个‘函数’...
说起来就这么长了,做起来...呵呵
回复
支持
反对
使用道具
举报
显身卡
pupilzeng
pupilzeng
当前离线
积分
2280
IP卡
狗仔卡
发表于 2003-9-1 15:56:14
|
显示全部楼层
不知道你编这个的目的是什么。
如果纯粹是表面上看去的这些的话,很多数学软件可以完成这个工作。
像mathematica.
回复
支持
反对
使用道具
举报
显身卡
fingster
fingster
当前离线
积分
900
IP卡
狗仔卡
楼主
|
发表于 2003-9-1 18:12:27
|
显示全部楼层
kensta你说的对。
我的原来的想法是把分析出的表达式写到shellscript里,用exec()直接调用,不用编译。不过问题在于bat中或者shellscript里可以用的变量个数。shellscript只能依次引用10个变量。
回复
支持
反对
使用道具
举报
显身卡
fingster
fingster
当前离线
积分
900
IP卡
狗仔卡
楼主
|
发表于 2003-9-1 18:17:28
|
显示全部楼层
pupilzeng,我正在编这样的数学软件
天啊,如果非要一个team才能开发出来的话,我也许应该考虑……
可是那就太可惜了!
回复
支持
反对
使用道具
举报
显身卡
pupilzeng
pupilzeng
当前离线
积分
2280
IP卡
狗仔卡
发表于 2003-9-1 18:40:21
|
显示全部楼层
其实我以前也有这个想法,做了一部分,但是后来放弃了,想想实在是太大了,这个工程。
后来发现我需要的功能在mathematica中都有了,我又何必再浪费精力呢。
回复
支持
反对
使用道具
举报
显身卡
fingster
fingster
当前离线
积分
900
IP卡
狗仔卡
楼主
|
发表于 2003-9-1 19:21:20
|
显示全部楼层
那不行啊!
mathematica是开源的吗?
我很想克服这个难关。
回复
支持
反对
使用道具
举报
显身卡
pupilzeng
pupilzeng
当前离线
积分
2280
IP卡
狗仔卡
发表于 2003-9-1 20:41:39
|
显示全部楼层
这个,估计要组织一个team才能克服了。
因为我发现mathematica的功能确实是比较多。
而且还需要数学方面的高手。
回复
支持
反对
使用道具
举报
显身卡
minus273
minus273
当前离线
积分
1395
IP卡
狗仔卡
发表于 2003-9-1 21:48:25
|
显示全部楼层
maxima.sf.net
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表