📄 calculator.cpp
字号:
#include <cstdlib>
#include "Calculator.h"
Calculator_T::Calculator_T(void):s()
{
//空
}
Calculator_T::Calculator_T(const char *p):s(p)
{
//空
}
Calculator_T::Calculator_T( Run_T&rhs):s(rhs)
{
//空
}
Calculator_T::~Calculator_T(void)
{
//空
}
Calculator_T& Calculator_T::operator =( Calculator_T&rhs)
{
if(this!=&rhs)
{
this->s=rhs.s;
}
return *this;
}
void Calculator_T::getOperator(double&x,double&y)
{
if(result.empty())
throw MissingOperator;
else
{
x=*result.begin();
result.erase(result.begin());
}
if(result.empty())
throw MissingOperator;
else
{
y=*result.begin();
result.erase(result.begin());
}
}
void Calculator_T::doOperator(char op)
{
double x,y;
getOperator(x,y);
switch(op)
{
case '+':result.insert(result.begin(),(y+x));break;
case '-':result.insert(result.begin(),(y-x));break;
case '*':result.insert(result.begin(),(y*x));break;
case '/':if(x==0.0) throw DivideByZero;
else result.insert(result.begin(),(y/x));break;
default:break;
}
}
void Calculator_T::eval(void)
{
char c;
vector<char> expression;
s.in_to_post(expression);
vector<char>::iterator p=expression.begin();
result.erase(result.begin(),result.end());
while(*p!='#')
{
switch(*p)
{
case '+':
case '-':
case '*':
case '/':doOperator(*p);break;
default:c=*p,result.insert(result.begin(),atof(&c));break;
}
p++;
}
if(!result.empty())
cout<<"结果为:"<<*result.begin()<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -