• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: C/C++
  • 标签: 逆波兰式  

资源简介

一个用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

评论

共有 条评论