📄 a.cpp
字号:
#include<iostream.h>
typedef struct{
char *base;
char *top;
int stacksize;
}Sqstack;
int initstack(Sqstack &s){
s.base=new char[100];
if(!s.base)return 0;
s.top=s.base;
s.stacksize=100;
return 1;
}
char Gettop(Sqstack s)
{
char e;
if(s.top==s.base)return 0;
e=*(s.top-1);
return e;
}
int Push(Sqstack &s,char e)
{
*s.top++=e;
return 1;
}
int Pop(Sqstack &s,char &e)
{
if(s.top==s.base)return 0;
e=*--s.top;
return 1;
}
typedef struct{
int *base;
int *top;
int stacksize;
}Sqstack1;
int initstack(Sqstack1 &s){
s.base=new int[100];
if(!s.base)return 0;
s.top=s.base;
s.stacksize=100;
return 1;
}
int Gettop(Sqstack1 s)
{
int e;
if(s.top==s.base)return 0;
e=*(s.top-1);
return e;
}
int Push(Sqstack1 &s,int e)
{
*s.top++=e;
return 1;
}
int Pop(Sqstack1 &s,int &e)
{
if(s.top==s.base)return 0;
e=*--s.top;
return 1;
}
int IN(char c)
{
switch(c)
{
case'+':return 1;
break;
case'-':return 1;
break;
case'*':return 1;
break;
case'/':return 1;
break;
case'(':return 1;
break;
case')':return 1;
break;
case'#':return 1;
break;
default:return 0;
}
}
char Precede(char d,char b)
{
int m,n;
char a[7][7]={{'>','>','<','<','<','>','>'},
{'>','>','<','<','<','>','>'},
{'>','>','>','>','<','>','>'},
{'>','>','>','>','<','>','>'},
{'<','<','<','<','<','=','o'},
{'>','>','>','>','o','>','>'},
{'<','<','<','<','<','o','='}};
switch(d){
case'+':m=0;
break;
case'-':m=1;
break;
case'*':m=2;
break;
case'/':m=3;
break;
case'(':m=4;
break;
case')':m=5;
break;
case'#':m=6;
break;
}
switch(b){
case'+':n=0;
break;
case'-':n=1;
break;
case'*':n=2;
break;
case'/':n=3;
break;
case'(':n=4;
break;
case')':n=5;
break;
case'#':n=6;
break;
}
return a[m][n];
}
int Opreate(int a,char theta,int b)
{
int c;
switch(theta){
case'+':c=a+b;
break;
case'-':c=a-b;
break;
case'*':c=a*b;
break;
case'/':c=a/b;
break;
}
return c;
}
void main()
{
cout<<"请输入要计算的式子:";
char c;
Sqstack OPTR;
initstack(OPTR);
Push(OPTR,'#');
Sqstack1 OPND;
initstack(OPND);
Sqstack1 S;
initstack(S);
cin>>c;
while(c!='#'||Gettop(OPTR)!='#')
{
int e;
if(IN(c))
{
if(S.base!=S.top)
{
Pop(S,e);
Push(OPND,e);
}
switch(Precede(Gettop(OPTR),c))
{
case'<':
Push(OPTR,c);
cin>>c;
break;
case'=':
char x;
Pop(OPTR,x);
cin>>c;
break;
case'>':
int a,b;
char theta;
Pop(OPTR,theta);
Pop(OPND,b);
Pop(OPND,a);
Push(OPND,Opreate(a,theta,b));
break;
}
}
else
{
if(S.base==S.top)
{
c=c-48;
Push(S,c);
}
else
{
Pop (S,e);
c=c-48;
e=e*10+c;
Push(S,e);
}
cin>>c;
}
}
int q;
Pop(OPND,q);
cout<<q;
}
typedef struct Lnode{
int floor;
int outfloor;
int giveuptime;
int Intertime;
struct Lnode *next;
}Lnode,*people;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -