【C++数据结构期末/课程设计】中缀表达式计算案例(详细注释/vc2010项目)

代写C语言、C++、Java、Python、HTML、JavaScript、vue、MySQL相关编程作业,
长期接单,信誉有保证,标价10-20每份,如有需要请加文章末尾QQ。

本文资源:https://download.csdn.net/download/weixin_47040861/89276163


1.题目要求

实验名称:计算表达式

实验内容:设计一个程序,把中缀表达式转换成- -棵二叉树, 然后通过后根遍历计算表达式的值。

实验目的与要求:对于输入的一-个中缀表达式,判断表达式是否合法。

如果合法,把中缀表达式转换成- -棵二叉树,然后通过后根遍历计算表达式的值,输出运算结果。

合法表达式不能为空,可以出现在表达式中的字符有:

(1) 运算符“+”、“-”、“*”、“/”;

(2)左右括号“(”、“)” ;

(3)整数(可以是多位的);

(4)空格符和制表符。

例如:表达式为“20+(3*(4+46)-6) / 2-134"将得到结果-42。

数据结构采用二叉树的链接表示。

2.视频演示

【C++数据结构期末/课程设计】中缀表达式计算案例(详细注释/vc2010项目)

3.项目介绍

项目内部有详细的注释解释各部分的功能,这里不再赘述,只说说项目的基本流程:

项目主函数:

int main() {
	while(true){
		string expr;//声明字符串变量用于存储存储输入的计算公式
		cout << "请输入一个中缀表达式:";
		getline(cin, expr);//获取公式
		expr=removeSpaces(expr);//移除空格和制表符

		if(!isValidInfixExpression(expr)){//判断公式格式是否合法
			continue;//若不合法则跳过此次二叉树创建
		};
		
		TreeNode* root = createExpressionTree(expr);//调用函数创建二叉树并返回头结点

		cout << "中序遍历结果为:" <<evaluateExpression(root)<< endl;//调用函数计算结果并打印
	}

    return 0;
}

项目流程:

1.在主函数中使用while循环来保证窗口持续存在,并处理多个计算公式的输入

2.在while循环中首先创建字符串用于接收输入的中缀表达式

3.由于题目要求中允许输入空格和制表符,但是这两种字符并不直接参与运算,所以要先调用removeSpaces()函数移除表达式中的空格和制表符,然后返回移除后的结果

4.然后调用isValidInfixExpression()函数判断表达式格式是否正确,包括长度是否合格、开头和末尾是否为运算符、连续的非数字字符格式是否正确等,若不正确则提示,然后跳过此次运算

5.接下来调用createExpressionTree()函数将中缀表达式转换为二叉树

6.然后调用evaluateExpression()函数计算生成的二叉树的计算结果并打印

 ↓如对项目有任何问题或需要,请加下方QQ↓

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a辰龙a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值