C语言-计算器实现(Dev c++编译通过)

转自http://zhangjunhd.blog.51cto.com/113473/102014

算法描叙:


-括号匹配


int match(char * cs, int size);
1.做一个空栈。读入字符直到文件尾。
2.对读入的字符进行判断,
    2.1如果字符是一个左括号,则入栈;
    2.2如果字符是一个右括号,如果栈空或弹出的左括号不匹配,则匹配失败;
    2.3输入结束,如果栈非空,则匹配失败,否则匹配成功。

-计算后缀表达式的值(假定后缀表达式正确)


int postfixValue(char * expression, int size);
1.做一个空栈,读入字符直到文件尾。
2.对读入的字符进行判断,
    2.1如果是数字,则入栈;
    2.2如果是运算符,则弹出两个数字并将计算结果入栈。
3.计算完毕后,最后弹出的值即为最终计算结果。

-中缀表达式转后缀表达式(假定中缀表达式正确)


void convertExpression(char * expression, int size);
1.做一个空栈,读入字符直到文件尾。
2.对读入的字符进行判断,
    2.1如果是操作数,则直接输出;
    2.2如果是运算符(+-*/)
        2.2.1如果栈不空,并且栈顶元素的优先级大于当前运算符优先级,则输出栈中所有优先级大于当前元素的运算符;
        2.2.2当前元素入栈;
        2.2.3上述四个运算符优先级均大于'('优先级。
    2.3如果是运算符'(',则入栈。
    2.4如果是运算符')',则出栈所有'('之前的栈元素,'('出栈,但不加入最终表达式。
3.输入完毕后,输出所有剩下的栈元素。

 

源代码:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值