简单计算器
【问题描述】实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符。整数除法仅保留整数部分(会与精确计算结果产生较大误差)。
【输入形式】包含四种运算符的字符串。
【输出形式】表达式计算结果。
【样例输入】1+1*2
【样例输出】3
【示例代码】
思路:先算乘除得各部分结果,再算加减得总结果
#include<iostream>
using namespace std;
int main()
{
int a[100];
char c[100];
int num,i=0,j=0;
char ch;
while(cin>>num)
{
a[i]=num;//存储数据
ch=cin.get();
if(ch=='\n'||ch==-1) {break;}//判断是否结束输入
c[j]=ch;//存储运算符
i++;
j++;
}
int b[100];
char d[100];
int x=0,y=0,m=1,n=0;
for(int k=0;k<j;k++)//先算乘除
{
if(c[k]=='-'||c[k]=='+')
{
d[y]=c[k];y++;
if(k==0||(k!=0&&c[k-1]=='+')||(k!=0&&c[k-1]=='-')) {b[x]=a[k];x++;}
if(k==j-1) {b[x]=a[j];}
}
else
{
if(c[k]=='*')
{
m=a[k]*a[k+1];
for(int g=k+1;;g++)
{
if(c[g]=='*') {m=m*a[g+1];}
else if(c[g]=='/') {m=m/a[g+1];}
else {n=g;break;}
}
}
if(c[k]=='/')
{
m=a[k]/a[k+1];
for(int g=k+1;;g++)
{
if(c[g]=='*') {m=m*a[g+1];}
else if(c[g]=='/') {m=m/a[g+1];}
else {n=g;break;}
}
}
b[x]=m;//用于按顺序存储参与最后的加减算法的数据成员
x++;
k=n-1;
}
}
if(y==0) {cout<<b[0]<<endl;}
else
{
int result=b[0];
for(int k=0;k<y;k++)//再算加减
{
if(d[k]=='+') {result=result+b[k+1];}
else if(d[k]=='-') {result=result-b[k+1];}
}
cout<<result<<endl;
}
return 0;
}
若各位大神有别的方法,欢迎一起交流,共同进步!