我现在要用c++做一个计算器,就是图形界面有点麻烦了,大家帮帮忙啊

时间:2022-02-23 21:59:17
做成像windows自带的计算器那种,用鼠标点击输入文本框
表达式输完后按'='结束输入,开始运算
算法我已经搞定了,就是图形界面有点麻烦了
只许用c++,  API
怎样让数字和运算符从右向左显示,帮忙想个办法啊

9 个解决方案

#1


你好,我最近也在搞这个,却苦于一直不懂啊,不懂就问!你能把算法跟我说说吗?谢谢你了~(我读不懂大段大段的程序的)

#2


建两个栈,一个符号栈,一个运算数栈,
运算符设置优先级,比如‘*’栈外优先级为4,‘+’栈外优先级为3,‘*’栈内优先级为5,‘+’栈外优先级为4,当扫描到栈外是‘*’,栈内是‘+’,栈外比栈内符号优先级高时,就直接进符号栈,要是栈外是‘+’,栈内是‘*’,就把栈内‘*’弹出,并从数据栈取两个运算数进行运算,结果存进数据栈,依次类推,最后‘=’优先级最底,全部弹出,结束计算。

#3


错了假设‘*’在外为4,‘+’在外为2,‘*’在内为5,‘+’在内为3,

#4


什么平台呀?Solairs下的图形工具我倒是有,我最近也在做这个,哈哈,我已经看了一周了,也还没有看明白怎么实现的。(我比较笨)

#5


建两个栈,一个符号栈,一个运算数栈,
运算符设置优先级,比如‘*’栈外优先级为4,‘+’栈外优先级为3,‘*’栈内优先级为5,‘+’栈外优先级为4,当扫描到栈外是‘*’,栈内是‘+’,栈外比栈内符号优先级高时,就直接进符号栈,要是栈外是‘+’,栈内是‘*’,就把栈内‘*’弹出,并从数据栈取两个运算数进行运算,结果存进数据栈,依次类推,最后‘=’优先级最底,全部弹出,结束计算。

请问如果加入左右括号怎么办?为什么要区分栈内栈外呢?这是标准算法吗?

#6


左括号栈外优先级较高,一来就进栈,但栈内优先级较低
右括号栈外优先级较低,一来就弹出栈内符号运算,直到遇到左括号

#7


我们现在用的Borland C++ 编译器5.5版。
用个记事本写完程序,直接编译

#8


我明天考试,明天会把这个认真看的,这个算法我问了老师两遍没有得到解答,如果我看不懂,希望到时候还能得到你的指点,我想我还不算很笨的,谢谢了~

#9


请问如何定义各种符号的优先级啊?我没太多经验的......能否再详细一点呢
或者可以贴出代码让我看看吗?

#1


你好,我最近也在搞这个,却苦于一直不懂啊,不懂就问!你能把算法跟我说说吗?谢谢你了~(我读不懂大段大段的程序的)

#2


建两个栈,一个符号栈,一个运算数栈,
运算符设置优先级,比如‘*’栈外优先级为4,‘+’栈外优先级为3,‘*’栈内优先级为5,‘+’栈外优先级为4,当扫描到栈外是‘*’,栈内是‘+’,栈外比栈内符号优先级高时,就直接进符号栈,要是栈外是‘+’,栈内是‘*’,就把栈内‘*’弹出,并从数据栈取两个运算数进行运算,结果存进数据栈,依次类推,最后‘=’优先级最底,全部弹出,结束计算。

#3


错了假设‘*’在外为4,‘+’在外为2,‘*’在内为5,‘+’在内为3,

#4


什么平台呀?Solairs下的图形工具我倒是有,我最近也在做这个,哈哈,我已经看了一周了,也还没有看明白怎么实现的。(我比较笨)

#5


建两个栈,一个符号栈,一个运算数栈,
运算符设置优先级,比如‘*’栈外优先级为4,‘+’栈外优先级为3,‘*’栈内优先级为5,‘+’栈外优先级为4,当扫描到栈外是‘*’,栈内是‘+’,栈外比栈内符号优先级高时,就直接进符号栈,要是栈外是‘+’,栈内是‘*’,就把栈内‘*’弹出,并从数据栈取两个运算数进行运算,结果存进数据栈,依次类推,最后‘=’优先级最底,全部弹出,结束计算。

请问如果加入左右括号怎么办?为什么要区分栈内栈外呢?这是标准算法吗?

#6


左括号栈外优先级较高,一来就进栈,但栈内优先级较低
右括号栈外优先级较低,一来就弹出栈内符号运算,直到遇到左括号

#7


我们现在用的Borland C++ 编译器5.5版。
用个记事本写完程序,直接编译

#8


我明天考试,明天会把这个认真看的,这个算法我问了老师两遍没有得到解答,如果我看不懂,希望到时候还能得到你的指点,我想我还不算很笨的,谢谢了~

#9


请问如何定义各种符号的优先级啊?我没太多经验的......能否再详细一点呢
或者可以贴出代码让我看看吗?