두 갈래 트리의 표현식에 근거하여 값을 구하다
#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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
회귀 구해 단일 체인표의 결점 개수묘사 단사슬표를 이용하여 하나의 정수 서열을 표시하고 귀속적인 방법을 이용하여 단사슬표의 결점의 개수를 계산한다. 입력 다중 그룹 데이터, 각 그룹 데이터는 두 줄, 첫 번째 행위 체인 테이블의 길이 n, 두 번째 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.