| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2452 人关注过本帖
标题:[求助] 用C++实现算术表达式计算的源程序
只看楼主 加入收藏
SunnyJane
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-12-8
收藏
 问题点数:0 回复次数:2 
[求助] 用C++实现算术表达式计算的源程序
算术表达式计算
【问题描述】
表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。(难度系数:0.7)
【基本要求】
以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用运算符优先关系,实现对算术四则混合运算表达式的求值。
【测试数据】
8;1+2+3+4;88-1*5;1024/4*8;1024/(4*8);(20+2)*(6/2);3-3-3;8/(9-9);2*(6+2*(3+6*(6+6)));(((6+6)*6+3)*2+6)*2;
【实现提示】
设置运算符栈和运算数栈辅助分析算符优先关系;在读入表达式的字符序列的同时,完成运算符和运算数(整数)的识别处理,以及相应的运算;在程序的适当位置输出运算符栈、运算数栈、输入字符和主要操作等内容。
【选做内容】
(1) 扩充运算符集,如增加乘方、单目减、赋值等运算。
(2) 运算量可以是变量。
(3) 运算量可以是实数类型。
搜索更多相关主题的帖子: 算术 表达 
2006-12-08 22:31
SunnyJane
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-12-8
收藏
得分:0 

这是计算后缀表达式值的函数,但调用后出来的不是值而是说,堆栈已满我的测试程序是
void main(void)
{
char postfixExp[6]={'1','2','+','4','+','#'};
PostExp( postfixExp);
}


void PostExp(char *postfixExp)
{

char x;
int x1,x2;
int i=0,j=0;
SeqStack<char> s; //s为一个空字符(运算符)栈
x=postfixExp[j]; //从中缀表达式取一字符到x

while(x!='#')
{
if(isdigit(x)) //如果x2是数字
{
// x.putback(x); //回退一位
s.Push(x); //实数入栈
// j++;
}
else if(!isdigit(x)) //如果ch是运算符
{
x2=s.Pop(); //取出前两个运算数:x1是左操作数
x1=s.Pop();
switch(x) //进行运算(x1 ch x2):结果在于x1中
{
case'+': x1+=x2; break;
case'-': x1-=x2; break;
case'*': x1*=x2; break;
case'/': x1/=x2; break;
default:
{
cout<<"后缀表达式语法错!"<<endl;
exit(1);
}
}
s.Push(x1); //中间运算结果入栈
// j++;
}
j++;
}
cout<<"计算结果:"<<s.Pop()<<endl; //因栈中只有最后结果,出栈之
}


有谁可以帮我看下,实在太感激了。


2006-12-10 20:55
zzydeai
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-11-27
收藏
得分:0 
有难度

试着做一个顶级黑客或者伟大的企业家
2006-12-11 16:03
快速回复:[求助] 用C++实现算术表达式计算的源程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023432 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved