📄 run.cpp
字号:
#include "Run.h"
Run_T::Run_T(void)
{
m_expression.push_back('#');
}
Run_T::Run_T(const char*p)
{
const char *q=p;
if(q==NULL)
{
m_expression.push_back('#');
}
else
{
while(*q!='#')
{
m_expression.push_back(*q);
q++;
}
m_expression.push_back('#');
}
}
Run_T::Run_T( Run_T&rhs)
{
*this=rhs;
}
Run_T::~Run_T(void)
{
//空函数体
}
Run_T& Run_T::operator =( Run_T&rhs)
{
if(this!=&rhs)
{
m_expression.erase(m_expression.begin(),m_expression.end());
Iterator p=rhs.m_expression.begin();
while(p!=rhs.m_expression.end())
{
m_expression.push_back(*p);
p++;
}
}
return *this;
}
int Run_T::in_stack(char c)
{
int priority;
switch(c)
{
case '(':priority=0;break;
case '+':
case '-':priority=5;break;
case '*':
case '/':priority=6;break;
case '#':priority=0;break;
default:break;
}
return priority;
}
int Run_T::out_stack(char c)
{
int priority;
switch(c)
{
case '(':priority=8;break;
case '+':
case '-':priority=5;break;
case '*':
case '/':priority=6;break;
case '#':priority=0;break;
default:break;
}
return priority;
}
void Run_T::in_to_post(vector<char>&rhs)
{
vector<char> Operator;
Operator.insert(Operator.begin(),'#');
if(!rhs.empty())
rhs.erase(rhs.begin(),rhs.end());
Iterator p=m_expression.begin();
char c;
while(*p!='#')
{
if(isdigit(*p)||isalpha(*p))
rhs.push_back(*p);
else if(*p==')')
{
c=*Operator.begin();
Operator.erase(Operator.begin());
while(c!='(')
{
rhs.push_back(c);
c=*Operator.begin();
Operator.erase(Operator.begin());
}
}
else
{
for(;out_stack(*p)<=in_stack(*Operator.begin()); Operator.erase(Operator.begin()))
rhs.push_back(*Operator.begin());
Operator.insert(Operator.begin(),*p);
}
p++;
}
vector<char>::iterator q=Operator.begin();
while(*q!='#')
{
rhs.push_back(*q);
q++;
}
rhs.push_back('#');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -