fuzhifanyi.cpp

来自「基于四则运算的算符优先的赋值表达式的翻译程序.」· C++ 代码 · 共 71 行

CPP
71
字号
#include<iostream.h>
  
  void main()
  {
	  char a[50],b[50],c[50];
	  char ch,T;
	  int i=0,k=0,t=0;
	  cout<<"please input the expression(end with #):"<<endl;
	  cin>>a;
	  for(int j=2;a[j]!='#';j++)
		 {  ch=a[j];
		    switch(ch)
			{
			  case '+':
			  case '-':
			    if(k==0)
					{ c[k]=ch; k++;}
			    else
					{ switch(c[k-1])
						{ case '*':
							 cout<<"T="<<b[i-2]<<"*"<<b[i-1]<<endl;
							 b[i-2]='T';i--;
							 c[k-1]=ch;break;
				   		  case '/':
					         cout<<"T="<<b[i-2]<<"/"<<b[i-1]<<endl;
					         b[i-2]='T';i--;
							 c[k-1]=ch;break;
						  default:c[k]=ch;k++;
						}
				   //c[k]=ch;k++;
					}
					break;
			  case '*':
		  	  case '/':
				 if(k==0)
				 { c[k]=ch;k++;}
				 else
				 switch(c[k-1])
					{     case '*':
							 cout<<"T="<<b[i-2]<<"*"<<b[i-1]<<endl;
							 b[i-2]='T';i--;
							 c[k-1]=ch;break;
				   		  case '/':
					         cout<<"T="<<b[i-2]<<"/"<<b[i-1]<<endl;
					         b[i-2]='T';i--;
							 c[k-1]=ch;break;
						  default:c[k]=ch;k++;  
					}
				  break;
			 case '(':
				   c[k]=ch;k++;break;
			 case ')':
				 do{
					 cout<<"T="<<b[i-2]<<c[k-1]<<b[i-1]<<endl;
					 b[i-2]='T';i--;k--;
				 }while(c[k-1]!='(');
					 k--;break;
			 default:b[i]=ch;i++;
			}
			// cout<<a[i];	 
		 }
		 while(k!=0)
		 {
			cout<<"T="<<b[i-2]<<c[k-1]<<b[i-1]<<endl;
			b[i-2]='T';i--;k--;
		 }
		 cout<<a[0]<<a[1]<<"T"<<endl;
  }

	
  

⌨️ 快捷键说明

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