实现简单带+、-、*、/、%、()的计算器
来源:互联网 发布:非洲网络 编辑:程序博客网 时间:2024/05/16 12:15
#include<iostream>#include<vector>#include<string>#include<stack>using namespace std;int chartoint(char a){ switch(a) { case '+': case '-':return 0; case '*': case '/': case '%':return 1; case '(':return 2; case ')':return 3; default:return 4; }}//acb(其中c为运算符,如2+3)int biaodashi(int a,int b,char c){ switch(c) { case '+':return a+b; case '-':return a-b; case '*':return a*b; case '/':return a/b; case '%':return a%b;; }}//中缀表达式转为后缀表达式void MiddletoBack(string &input,vector<char>&output){ if(input=="") return; stack<char> a; int len=input.size(); for(int i=0;i<len;i++) { int cur=chartoint(input[i]); if(cur==4) output.push_back(input[i]); else { int flag=0; while(a.size()!=0) { int front=chartoint(a.top()); if(cur==3) { while(front!=2) { output.push_back(a.top()); a.pop(); front=chartoint(a.top()); } } if(front==2) { flag=1; if(cur==3) { a.pop(); break; } else{ a.push(input[i]); break; } } else if(front>=cur) { output.push_back(a.top()); a.pop(); } else break; } if(flag==0) a.push(input[i]); } } while(a.size()!=0) { output.push_back(a.top()); a.pop(); }}//计算后缀表达式int calcu(vector<char>&output){ int len=output.size(); stack<int>result; for(int i=0;i<len;i++) { int temp=chartoint(output[i]); if(temp==4) result.push(output[i]-'0'); else { int b=result.top(); result.pop(); int a=result.top(); result.pop(); int c=biaodashi(a,b,output[i]); result.push(c); } } return result.top();}int main(){//Gray(3); vector<string> result; string input="1+2*3-5%1*6"; vector<char>output; MiddletoBack(input,output); int c=biaodashi(2,3,input[1]); int len=output.size(); for(int i=0;i<len;i++) cout<<output[i]<<endl; cout<<calcu(output); return 0;}
0 0
- 实现简单带+、-、*、/、%、()的计算器
- 使用Java实现Windows自带计算器(超简单)
- 简单的计算器实现
- 简单计算器的实现
- 简单计算器的实现
- 简单计算器的实现
- 计算器的简单实现
- 简单计算器的实现
- 简单计算器的实现
- 简单计算器的实现
- 简单的计算器小程序(不带括号)
- AndroidStudio的简单计算器(带优先级)开发小程序~
- 【数据结构】用栈实现的简单计算器(先转换为后缀表达式、可以计算带括号的)
- 九度1019简单计算器到带括号的计算器
- C#实现计算器(简单计算器)
- 简单的计算器的实现
- 栈实现的带括号的计算器
- 栈实现的带括号的计算器
- [SQL]SQL Server SQL多表连接查询(详细实例)
- 阅读《Android 从入门到精通》(3)——Activity 与界面
- scala编程
- Pollard Rho算法思想
- Sublime Text 3 快捷键精华版
- 实现简单带+、-、*、/、%、()的计算器
- HBase学习笔记(一)———《HBase简介》
- HDU 4372 Count the Buildings(第一类Stirling数)
- poi解决受保护视图问题
- 论UML建模
- GDI+学习记录之获得图片每个像素
- FLT_EPSILON定义在<float.h>
- IOS CoreText -- 基本用法
- Linux平台Cpu使用率的计算