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

📄 expre.txt

📁 C++描述的数据结构内容,在C++builder的环境中运行,这是第一部分
💻 TXT
字号:
//表达式求值expre.cpp
#include<iostream.h>
#include<iomanip.h>
#include<string.h>
//#include<stdio.h>
#include<malloc.h>
#include<conio.h>

#define EOFILE '`'
typedef char Status;
typedef char SElemType;
#include "stack.cpp"
char OP[10]={'+','-','*','/','(',')','#'};
int precede[7][7]={
      1,1,2,2,2,1,1,
      1,1,2,2,2,1,1,
      1,1,1,1,2,1,1,
      1,1,1,1,2,1,1,
      2,2,2,2,2,3,0,
      1,1,1,1,0,1,1,
      2,2,2,2,2,0,3};

int In(char c,char *op)
{ int i=0;
  while(i<7)
    if(c==op[i++]) return 1;
  return 0;
}
char Precede(char op,char c)
{ int pos_op;
  int pos_c;
  int i;
  for(i=0;i<7;i++)
    { if(op==OP[i]) pos_op=i;
      if(c==OP[i]) pos_c=i;
    }
  switch(precede[pos_op][pos_c])
    { case 1:  return '>';
      case 2:  return '<';
      case 3:  return '=';
    }
 return 'A';
}
char Operate(int a,char theta,int b)
{switch(theta)
  { case '+':return a+b-'0';
    case '-':return a-b+'0';
    case '*':return (a-'0')*(b-'0')+'0';
    case '/':return (a-'0')/(b-'0')+'0';}
 return 'A';
}
char EvaluateExpression()
{SqStack *OPND,*OPTR;
 char c,x,theta;
 char a,b;
 OPTR->InitStack(&OPTR);
 OPTR->Push('#');
 OPND->InitStack(&OPND);
 c=getchar();
 while(c!='#'||OPTR->GetTop()!='#')
  {if(!In(c,OP))
    {OPND->Push(c);c=getchar();}
   else
    switch(Precede(OPTR->GetTop(),c))
     {case '<':
        OPTR->Push(c);
        c=getchar();break;
      case '=':
        OPTR->Pop(&x);
        c=getchar();break;
      case '>':
        OPTR->Pop(&theta);
        OPND->Pop(&b);OPND->Pop(&a);
        OPND->Push(Operate(a,theta,b));
        break;}
   }
 c=OPND->GetTop();
 OPTR->DestroyStack();
 OPND->DestroyStack();
 return c;
}
void main()
{ char i;
  printf("expre.cpp运行结果:\n");
  printf("范围[0,9],输入以#号结束:");
  i=EvaluateExpression();
  cout<<"\n表达式的值是:";
  cout<<i-'0'<<endl;
  getch();}
expre.cpp运行结果:
范围[0,9],输入以#号结束:5+8*5/4-9#
表达式的值是:6

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -