本例是用C++写的一个简单计算器,输入计算表达式,然后就可以输出结果,在代码中,我使用了模板类vector,感觉十分的有用和方便,因为比较简单,所以希望大神不要嘲笑,本例花费了两个多小时,包括从想做这个计算器开始,到最终的BUG解决,感觉自己的开发效率瞬间就提升了。。不多说了,附上源代码,希望对和我一样简单技术的人有用吧,希望大家和我交流。。。。。。。
#include<iostream>
#include<vector>
using namespace std;
void Start();
int IfEnd();
int main()
{
Start();
IfEnd();
return 0;
}
void Start()
{
vector<double> a;
vector<char> b;
cout<<"请输入计算表达式,以#结束!"<<endl;
double a1;
char b1;
cin>>a1>>b1;
while(b1!='#')
{
a.push_back(a1);
b.push_back(b1);
cin>>a1>>b1;
}
a.push_back(a1);
b.push_back(b1);
int temp=0;
for(int i=0;b[i]!='#';)
{
if(temp==1)
i=0;
if(b[i]=='*'||b[i]=='/')
{
if(b[i]=='*')
{if(a.size()==2)
{
a[0]=a[0]*a[1];
cout<<"计算结果为:"<<a[0]<<endl;
break;
}
a[i]=a[i]*a[i+1];
temp=1;
for(int j=i+1;j<a.size()-1;j++)
a[j]=a[j+1];
for(int j=i;j<b.size()-1;j++)
b[j]=b[j+1];
a.pop_back();
b.pop_back();
}
if(b[i]=='/')
{
if(a.size()==2)
{
a[0]=a[0]/a[1];
cout<<"计算结果为:"<<a[0]<<endl;
break;
}
a[i]=a[i]/a[i+1];
temp=1;
for(int j=i+1;j<a.size()-1;j++)
a[j]=a[j+1];
for(int j=i;j<b.size()-1;j++)
b[j]=b[j+1];
a.pop_back();
b.pop_back();
}
else
{
temp=0;
i++;
}
}
else
{
temp=0;
i++;
}
}
temp=0;
for(int i=0;b[i]!='#';)
{
if(temp==1)
i=0;
if(b[i]=='+'||b[i]=='-')
{
if(b[i]=='+')
{
if(a.size()==2)
{
a[0]=a[0]+a[1];
cout<<"计算结果为:"<<a[0]<<endl;
break;
}
a[i]=a[i]+a[i+1];
temp=1;
for(int j=i+1;j<a.size()-1;j++)
a[j]=a[j+1];
for(int j=i;j<b.size()-1;j++)
b[j]=b[j+1];
a.pop_back();
b.pop_back();
/*for(int k=0;k<a.size();k++)
cout<<a[k]<<b[k]<<endl;*/
}
}
if(b[i]=='-')
{
if(b[i]=='-')
{
if(a.size()==2)
{
a[0]=a[0]-a[1];
cout<<"计算结果为:"<<a[0]<<endl;
break;
}
a[i]=a[i]-a[i+1];
temp=1;
for(int j=i+1;j<a.size()-1;j++)
a[j]=a[j+1];
for(int j=i;j<b.size()-1;j++)
b[j]=b[j+1];
a.pop_back();
b.pop_back();
}
else
{
temp=0;
i++;
}
}
}
}
int IfEnd()
{
cout<<"继续计算?(y/n)"<<endl;
char a;
cin>>a;
if(a=='y'||a=='Y')
Start();
else
return 0;
}