📄 bool.cpp
字号:
#include<iostream>
#include <string>
#include <stack>
using namespace std;
stack<char> s;
void sub_E();
void sub_T();
void sub_F();
void GEQ(char);
int num=0;
char QT[10][4],T='A',c;
void sub_E()
{
sub_T();
R1: if(c=='^')
{
c=getchar();
sub_T();
GEQ('^');
goto R1;
}
}
void sub_T()
{
sub_F();
R4: if(c=='&')
{
c=getchar();
sub_F();
GEQ('&');
goto R4;
}
}
void sub_F()
{
if(c>='a'&&c<='z')
{
s.push(c);
c=getchar();
}
else if(c=='(')
{
c=getchar();
sub_E();
if(c==')')
c=getchar();
else
{
cout<<"括号不匹配!"<<endl;
exit(0);
}
}
else
{
cout<<"非法符号!"<<endl;
exit(0);
}
}
void GEQ(char m)
{
QT[num][0]=m;
QT[num][2]=s.top();s.pop();
QT[num][1]=s.top();s.pop();
QT[num][3]=T;
s.push(T);
num++;
T++;
}
void PRINT()
{
printf("您输入的表达式所对应的四元式为:\n");
for(int i=0;i<num;i++)
{
printf("(");
printf("%c",QT[i][0]);
if(QT[i][1]<='Z'&&QT[i][1]>='A')
printf("\t%c%d",'t',QT[i][1]-'A'+1);
else
printf("\t%c",QT[i][1]);
if(QT[i][2]<='Z'&&QT[i][1]>='A')
printf("\t%c%d",'t',QT[i][2]-'A'+1);
else
printf("\t%c",QT[i][2]);
if(QT[i][3]<='Z'&&QT[i][1]>='A')
printf("\t%c%d",'t',QT[i][3]-'A'+1);
else
printf("\t%c",QT[i][3]);
printf(")\n");
}
}
void main()
{
cout<<"----表达式应由小写字母、运算符及小括号组成,并以\"#\"结束----\n";
cout<<"请输入表达式:";
c=getchar();
sub_E();
if(c=='#')
PRINT();
else
{
cout<<"无结束符或漏写运算符!";
exit(0);
}
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -