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

📄 siyuanshi.txt

📁 输出四元式
💻 TXT
字号:
#include<string>
#include<iostream>
  
using namespace std;
const int N=20;

void si_yuan_shi(string expression)
{
    string exp[N];
	char t_num='0';
    int i=0,j=0,k=0,num;
    num=expression.size();
    for( i=0;i<num;i++)
       exp[i]=expression[i];
    
   for(j=0;j<num;j++)       //处理  ()
      if(exp[j]=="(")
      {
             string temp_result="";
             for(i=j+1;i<num;i++)  //截取括号里面的表达式
               { 
               if(exp[i]==")")break;
               temp_result+=exp[i];
               }
              si_yuan_shi(temp_result);//把括号里的表达示作为新表达示
              for(k=j;k<=i;k++)         //利用递归求出四元表达式
                  exp[k]="";
			  exp[j]="t";
			  t_num++;
			  exp[j]+=t_num;

	  }
	  
	  
    for(j=0;j<num;j++)        //第二步  乘除
       if(exp[j]=="*"||exp[j]=="/"||exp[j]=="%") 
       {  
		   cout<<endl<<"处理一个  *  /  后,四元式:"<<endl; 
          for(i=j-1;i>=0;i--)if(exp[i]!="")break;//向前寻找非空字符串
          for(k=j+1;k<<num;k++)if(exp[k]!="")break;//向后寻找字符串
           cout<<"("<<exp[j]<<","<<exp[i]<<","<<exp[k]<<",";
		   t_num++;
		  exp[i]="t";          // 换成  T
		  exp[i]+=t_num;
		  cout<<exp[i]<<")"<<endl; 
            exp[k]="";exp[j]="";
         }
	   
      for(j=0;j<num;j++)        //第三  加减  
       if(exp[j]=="-"||exp[j]=="+")
        {
		   cout<<endl<<"处理 一个 +  -  后,四元式:"<<endl;
         for(i=j-1;i>=0;i--)if(exp[i]!="")break;
         for(k=j+1;k<<num;k++)if(exp[k]!="")break;
		  cout<<"("<<exp[j]<<","<<exp[i]<<","<<exp[k]<<",";
		   t_num++;
		  exp[i]="t";          
		  exp[i]+=t_num;
		  cout<<exp[i]<<")"<<endl; 
            exp[k]="";exp[j]="";
        }

	 for(j=0;j<num;j++)       //最后  等号
      if(exp[j]=="=")
        {
		  	cout<<endl<<"处理 一个  =  后,四元式:"<<endl;  
          for(i=j-1;i>=0;i--)if(exp[i]!="")break;
          for(k=j+1;k<<num;k++)if(exp[k]!="")break;
            cout<<"("<<exp[j]<<","<<exp[k]<<","<<"-"<<",";
		      cout<<exp[i]<<")"<<endl; 
            exp[k]="";exp[j]="";
         }
		
	 
 
  
}






void main()
{
  string  expression,result="";
  
  cout<<"请输入表达示:";
  
  cin>>expression;
  si_yuan_shi(expression);
  
   



}

⌨️ 快捷键说明

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