首页 > 编程知识 正文

C语言表达式求值,表达式求值算法的实现课程设计

时间:2023-05-05 10:22:34 阅读:22362 作者:4495

前几天,我们. net老师请我们制作了一台网络计算机,熟悉Vs环境,为图在网上下载公式对C#版进行了评测

非常容易使用,作业很好。

之后,他注意到久违地制作了数据结构性的东西,萌发了编写公式进行评价的Java实现。 是重复工作吧。

网络资源很多,但大部分很乱,所以今天详细总结。

首先,让我谈谈设计理念:

转换过程包括使用以下算法读取骑马订操作数、操作符和括号:

初始化空堆栈,并清空结果字符串变量。

从左向右一个字符一个字符地读取骑马订格式。

如果字符是操作数,则将其添加到结果字符串中。

如果字符是运算符,则弹出pop运算符,直到遇到右括号、低优先级运算符或相同优先级的右联接符号。 将此操作员推入堆栈。

如果字符是右括号,请将其推入堆栈。

如果字符是右括号,则在遇到右括号之前弹出所有操作符,并将其添加到结果字符串中。

到达输入字符串的末尾时,所有操作符都将弹出并添加到结果字符串中。

后缀表达式的评价

后缀表达式的评估比直接评估骑马订表达式更容易。 后缀表达式不需要括号,操作符的优先级也不再起作用。 可以使用以下算法评估后缀表达式:

初始化空堆栈

从左向右读取后缀表达式

如果字符是操作数,请将其推入堆栈。

如果字符是操作符,则发出两个操作数,执行相应的操作,然后将结果推入堆栈。 如果无法弹出两个操作数,则后缀表达式语法不正确。

从堆栈中弹出结果,直到后缀表达式的末尾。 如果后缀表达式的格式正确,则堆栈必须为空。

这是整体的想法。 具体细节请看我的代码。 也有评论。

当然程序可能有漏洞,如果发现未知错误,请联系我,直接回复或发邮件

Westmoon@yeah.net也可以。 谢谢你。

扩展内容:

上述方法是逆波兰式评价(后缀),是先按优先顺序排序再计算的方法,真正的任务是

字符串转换,也就是将骑马订表达式转换为后缀表达式的方法。

但是,网上也有可以直接评价骑马订形式的做法。 还没有看到具体的想法

如果有感兴趣的希望的话请告诉我。 谢谢你。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。