⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 run.cpp

📁 一个关于算式表达式求值的课程设计
💻 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 + -