MFC 实现 加减乘除,括号,乘方的 计算器

本文介绍了使用MFC实现一个支持加减乘除、括号和乘方运算的计算器。讲解了如何通过中缀表达式转化为后缀表达式来处理运算优先级,同时详细阐述了M进制到N进制的转换方法,包括从M进制到10进制,再到N进制的步骤,并提供了相应的源代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MFC 实现  可加减乘除,括号,乘方 以及进制转换的 计算器

一、带括号的四则运算以及乘方运算

输入的字符串为中缀表达式,我们对表达式进行求值,则首先要解决的问题即为运算优先级,然后再进行求值,通俗的说就是我先根据计算优先级确定好表达式计算的顺序,然后我在根据这个顺序一步一步进行计算。。

那么,首先,我们先处理运算优先级,这里我们用到数据结构以及离散数学里面的一个知识点,将中缀表达式转化为后(前)缀表达式,或者说是将中序遍历表达式树转化为后(前)序遍历。这里 小熊 给大家介绍的方法是 中缀表达式转化为后缀表达式。

学过了数据结构的同学这里应该很容易理解,比如表达式a*(b+ c)-d我们这里转化的规则为:

从左到右扫描a*(b + c)-d的每一数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于栈顶符号(乘方优先乘除,乘除优先加减)则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。【PS:这里“输出”的意思是将字符存入 一个字符串里面】。

考虑到读者可能还是感到有点迷惑,小熊 以具体的例子给大家进行分析吧!比如,输入的表示式为9+(3-1)*3+10/2【这样运算符号在两数字之间的,叫做中缀表达式】

【PS:下图非原创,为了大家能够清楚地理解这个过程,引用了别人的例子委屈

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值