资源简介
一个用C++写的简单的逆波兰式的生成程序,用于对编译原理里面的中缀表达式的处理!
代码片段和文件信息
#include
using namespace std;
#include
#include
#include
#define maxbuffer 64
int main()
{
char display_out(char out_ch[maxbuffer] char ch[32]); //定义显示转换函数
static int i=0;
static int j=0;
char ch[maxbuffer]s[maxbuffer]out[maxbuffer];
begin:
cout<<“请输入中缀表达式: “; //输入中缀表达式并存放在 数组ch[maxbuffer]中
cin>>ch;
for(i=0;i {out[i]=ch[i];}
cout<<“请确认您输入的表达式: “; //确认所输入的式子是否为您所想的?
while(out[j]!=‘#‘) //判断是不是以#结束
{
cout< j++;
}
cout<<‘#‘< char m;
cout<<“Yes:Enter Y or y! No:Enter N or n!“< cin>>m;
if((m==‘Y‘)||(m==‘y‘))
display_out(sout); //调用函数进行处理
else if ((m==‘N‘)||(m==‘n‘))
{cout<<“请重新输入中缀表达式“; goto begin; }
system(“pause“);
}
char display_out(char out_ch[32]char ch[])
{
int top=-1;
int i=0data[maxbuffer]n;
int j=0;
char sta[20];
while(ch[i]!=‘#‘)
{
if(isalnum(ch[i]))
{
while(isalnum(ch[i]))
{
out_ch[j]=ch[i];
j++;
i++;
}
out_ch[j]=‘ ‘;
j++;
}
else
{
switch(ch[i])
{
case ‘+‘: //对”+、-“号的处理
case ‘-‘:
if(sta[top]==‘(‘||top==-1)
{
top++;
sta[top]=ch[i];
i++;
}
else
{
out_ch[j]=sta[top];
j++;
to
评论
共有 条评论