두 갈래 트리의 표현식에 근거하여 값을 구하다

#include 
#include
#include 
#define MAXSIZE 1000
using namespace std;
char op[7] = { '+', '-', '*', '/', '(', ')', '=' };

typedef struct 
{
	char *base;
	char *top;
	int stacksize;
	
}SqStackOPTR;
 
typedef struct 
{
	double *base;
	double *top;
	int stacksize;
	
}SqStackOPND;

int InitStack(SqStackOPTR &S)
{
 	S.base=new char [MAXSIZE];
	if(!S.base) return 0;
 	S.top=S.base;
 	S.stacksize=MAXSIZE;
 	return 1;
}

int InitStack(SqStackOPND &S)
{
 	S.base=new double [MAXSIZE];
	if(!S.base) return 0;
 	S.top=S.base;
 	S.stacksize=MAXSIZE;
 	return 1;
}

int Push(SqStackOPTR &S,char e)
{
	if(S.top-S.base==S.stacksize) return 0;	
	*S.top=e;
	S.top++;
	return 1;
}

int Push(SqStackOPND &S,double e)
{
	if(S.top-S.base==S.stacksize) return 0;	
	*S.top=e;
	S.top++;
	return 1;
}


double GetTop(SqStackOPND S)
{
	if(S.top!=S.base)
		return *(S.top-1);
}

char GetTop(SqStackOPTR S)
{
	if(S.top!=S.base)
		return *(S.top-1);
}

int Pop(SqStackOPTR &S,char &e)
{
	if(S.top==S.base) return 0;
	S.top--;
	e=*S.top;
	return 1;
}

int Pop(SqStackOPND &S,double &e)
{
	if(S.top==S.base)	return 0;
	S.top--;
	e=*S.top;
	return 1;
}

int In(char ch) {// ch 
	for (int i = 0; i < 7; i++) {
		if (ch == op[i]) {
			return 1;
		}
	}
	return 0;
}
char Precede(char c1, char c2)
{
	if((c1=='('&&c2==')')||(c1=='='&&c2=='=') )return '=';
	else
	if(((c1=='+'||c1=='-'||c1=='*'||c1=='/'||c1==')') && (c2=='+'||c2=='-'||c2==')'||c2=='='))||((c1=='*'||c1=='/'||c1==')')&&(c2=='*'||c2=='/')))return '>';
	else
	if(((c1=='('||c1=='=')&&c2!=')'&&c2!='=')|| ((c1=='+'||c1=='-')&&(c2=='*'||c2=='/'))||c1=='('||c2=='(') return '='0'&&ch<='9')
			{// 
				m=m*10+(ch-48);
				cin >> ch;
			}
			if(ch=='.')// 
				cin >> ch;
			int k=1;
			while(ch>='0'&&ch<='9')
			{
				n=n+(ch-48)*pow(10.0,-k);
				k++;
				cin>>ch;
			}
		//	cout<> ch; // ch OPTR , ch
			//	cout<':// ,  
			//	cout<"<> ch; // OPTR “(”, ch
				//cout<> ch;
				//cout << " " << endl;
				if(ch=='=')break;
				double res = EvaluateExpression(ch);
				cout <

 
 
묘사
 
표현식(표현식의 수는 모두 10보다 작은 정수)을 입력하고 두 갈래 트리를 이용하여 표현식을 표시하고 표현식 트리를 만든 다음 두 갈래 트리의 반복 조작을 이용하여 표현식의 값을 구한다.
 
 
입력
다중 그룹 데이터.각 그룹의 데이터 줄은 하나의 표현식으로, 표현식은'='로 끝난다.입력이 "="하나만 있으면 입력이 끝납니다.
출력
각 그룹의 데이터는 표현식의 값으로 한 줄을 출력합니다.
샘플 1 입력
2*(2+5)=
1+2=
=

출력 샘플 1
14
3

좋은 웹페이지 즐겨찾기