CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  数据结构与算法

算术表达式求值问题请教~~

楼主fantasyzhang(未完成告白)2006-07-01 15:27:26 在 专题开发/技术/项目 / 数据结构与算法 提问

进行简单的四则运算我知道是不难实现的,但是怎样能够实现乘方,求绝对值以及允许运算量为变量呢?  
  我实现想不明白,尤其是乘方问题,请各位指教~~ 问题点数:20、回复次数:11Top

1 楼uikey(buaa副班长)回复于 2006-07-01 21:14:07 得分 0

题目表达不清楚。Top

2 楼crazy_lazy_pig(疯狂懒猪)回复于 2006-07-02 11:38:31 得分 0

楼主要做个编译器?Top

3 楼fantasyzhang(未完成告白)回复于 2006-07-02 12:32:39 得分 0

简单的说就是输入类似:3*7+(2+3)算术表达式,程序将表达式求值过程演示一遍,简单的是可以的,但是怎样实现实数的呢,比如:3.1*7.4+(2.4+3)???Top

4 楼galois_godel()回复于 2006-07-02 12:34:05 得分 0

不是一样的表达式解析吗Top

5 楼CD2006(小英雄)回复于 2006-07-06 09:33:50 得分 0

计算器你要做难就做难,要简单也简单。  
  你就做语法分析吧Top

6 楼mmmcd(超超)回复于 2006-07-06 09:44:56 得分 0

把表达式文法写出来,用递归下降分析程序很简单  
  “实现乘方,求绝对值以及允许运算量为变量”  
  就在文法中增加规则,相应在分析程序中增加函数Top

7 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-07-07 18:37:00 得分 0

每一个操作符都是有优先级的,对于乘方和‘   *   ’的优先级一样。  
   
    然后进栈出栈的操作和*是类似的,在   double   operate(   int   a,   char   theta,   int   b   )填加:  
     
    if(   '^'   ==   theta   )  
    {  
          return   pow(   a,   b   );  
    }Top

8 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-07-07 18:41:08 得分 0

求绝对值以及允许运算量为变量呢  
   
  绝对值的话可以     |a|   转化成所谓的   a~1             ~为操作符,然后1是常量。  
   
  允许运算量为变量?   不是很好做!Top

9 楼iicup(双杯献酒)回复于 2006-07-25 09:55:00 得分 0

学习编译原理吧.  
  看过状态机就什么都明白了.Top

10 楼xjtucser(cser)回复于 2006-07-26 01:03:11 得分 0

 
  (1)定义算符的优先级,利用数字栈和符号栈进行处理。乘方的优先级应该比乘法和除法高,绝对值左符号|和右符号|(程序可以另起符号,以示区分)和左括号(,有括号)相似。  
   
  至于变量,要看你的表达式怎么修改变动变量的机制了。  
   
  (2)第二种做法,就是楼上兄弟说的,把文法产生式写出来,利用自上而下的递归下降分析方法处理,前提是你必须把产生式消除左递归,无歧义性。Top

11 楼Preamble(Rubbish)回复于 2006-07-27 01:25:05 得分 0

要等到你学了编译原理后再做吧,哈哈哈。  
   
  那时你可以做个简单的解释程序器,函数,if   ,都可以加入的。哈哈哈Top

相关问题

关键词

得分解答快速导航

  • 帖主:fantasyzhang

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo