| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 605 人关注过本帖
标题:表达式求值问题,高手帮忙啊
取消只看楼主 加入收藏
limuge
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-10-27
收藏
 问题点数:0 回复次数:0 
表达式求值问题,高手帮忙啊

/*需要解决的问题: 任务一: 1,请编写压栈和出栈函数,函数头分别为 int push(bds_stack &s,int e)

int pop(bds_stack &s,int &e) 2,用编写好的函数替代程序中的对应代码 任务二:请在任务一的基础上修改程序,使之可以解决解决二位数以上的表达式计算, 任务三:请修改程序,以便其能够检验出不正确的后缀表达式 另:本程序后缀表达式直接写入数组,同学们可以考虑其他后缀表达式的输入方法 */ 程序如下: #include <iostream.h>

typedef int elemtype;

struct sqstack{ elemtype data[20]; int top; }; //定义栈类型

void main() { char bds_hz[]="42 22 3*+4 2/-#"; //后缀表达式 int i=0; int x1,x2,temp; sqstack bds; //定义一个栈 bds.top=-1; //初始化栈顶指针 while (bds_hz[i]!='#') //依次取得后缀表达式中的字符判断并操作 { if (('0'<=bds_hz[i])&&(bds_hz[i]<='9') ) bds.data[++bds.top]=bds_hz[i]-'0'; //如果是操作数,压栈 else {//如果是操作符 x2=bds.data[bds.top--]; //操作数2,出栈 x1=bds.data[bds.top--]; //操作数1,出栈 //计算 switch (bds_hz[i]) { case '+': temp=x1+x2;break; case '-': temp=x1-x2;break; case '*': temp=x1*x2;break; case '/': temp=x1/x2;break; }

bds.data[++bds.top]=temp; //计算结果压栈 } i++; //指针后移

} cout<<bds.data[0]<<endl; //输出表达式结果

}

搜索更多相关主题的帖子: 表达 求值 
2005-10-27 22:35
快速回复:表达式求值问题,高手帮忙啊
数据加载中...
 
   



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

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