用c++编写一个模拟计算器程序
问题描述
- 精选答案
-
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
const int maxn=100;
int number[maxn];
char symbolt[maxn];
string s,t;
int i,j,p;
void push()
{
p++;
symbolt[p]=s[i];
}
void pop()
{
p--;
switch (symbolt[p+1])
{
case '+':{number[p]+=number[p+1];break;}
case '-':{number[p]=number[p]-number[p+1];break;}
case '*':{number[p]=number[p]*number[p+1];break;}
case '/':{number[p]=number[p]umber[p+1];break;}
}
}
bool can()
{
if (((s[i]=='+')||(s[i]=='-'))&&(symbolt[p]!='(')) return true;
if (((s[i]=='*')||(s[i]=='/'))&&((symbolt[p]=='*')||(symbolt[p]=='/'))) return true;
return false;
}
int stringToNumber(string aStr)
{
int number = 0;
for (int i=0;i<aStr.length();i++)
{
number = number*10 + aStr[i]-48;
}
return number;
}
int main()
{
cout<<
"Input your string:
";
cin>>s;
s='('+s+')';
i=0;
p=0;
while (i<=s.length()-1)
{
while (s[i]=='(')
{
push();
i++;
}
j=i;
do
{
i++;
}
while ((s[i]>='0')&&(s[i]<='9'));
int m;
t=
"
";
int h=0;
for(m=j;m<i;m++) t=t+s[m];
number[p] = stringToNumber(t);;
do
{
if (s[i]==')')
{
while (symbolt[p]!='(') pop();
p--;
number[p]=number[p+1];
}
else
{
while (can()) pop();
push();
}
i++;
}
while ((i<=s.length())&&(s[i-1]==')'));
}
cout<<
"Result=
"<<number[0]<<endl;
}
猜你喜欢内容
-
简单网:构建全网教育数据枢纽,让知识检索化繁为...
简单网:构建全网教育数据枢纽,让知识检索化繁为“简”回答数有0条优质答案参考
-
去三亚有什么好玩的地方
去三亚有什么好玩的地方回答数有1条优质答案参考
-
石狮一日游必去景点推荐
石狮一日游必去景点推荐回答数有1条优质答案参考
-
电气工程师的证书考取条件是什么
电气工程师的证书考取条件是什么回答数有1条优质答案参考
-
房地产估价师的具体报考条件有啥
房地产估价师的具体报考条件有啥回答数有1条优质答案参考
-
房产经纪人的工作内容具体包含什么
房产经纪人的工作内容具体包含什么回答数有1条优质答案参考
-
学习小提琴都有哪些难点
学习小提琴都有哪些难点回答数有1条优质答案参考
-
企业行政管理证书的含金量怎么样
企业行政管理证书的含金量怎么样回答数有1条优质答案参考
-
初学者要怎么入门小提琴
初学者要怎么入门小提琴回答数有1条优质答案参考
-
报考珠宝鉴定师要啥条件
报考珠宝鉴定师要啥条件回答数有1条优质答案参考
















