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

📄 a.cpp

📁 算符优先函数 设计一个给定算符优先分析表
💻 CPP
字号:
#include<iostream.h>
char a[4][4]={' ','a','b','c','a','>','<','<','b','>','>','<','c','>','>','<'};

int f(char m);
int g(char n);

int max(int x,int y)
{return (x>y?x:y);}


int f(char m)
{
	int fa=1;
	int fb=1;
	int fc=1;
	int ga,gb,gc;
	if(m=='a')
	{
		for(int j=1;j<4;j++)
			if(a[1][j]=='>'&&j==1) 
			{
				ga=g('a');
				if(fa<=ga) fa=ga+1;
			}
			if(a[1][j]=='>'&&j==2) 
			{
				gb=g('b');
				if(fa<=gb) fa=gb+1;
			}
			if(a[1][j]=='>'&&j==3) 
			{
				gc=g('c');
				if(fa<=gc) fa=gc+1;
			}
			if(a[1][j]=='<'&&j==1)
			{
                ga=g('a');
				if(fa>=ga) fa=ga-1;
			}
			if(a[1][j]=='<'&&j==2)
			{
                gb=g('b');
				if(fa>=gb) fa=gb-1;
			}
			if(a[1][j]=='<'&&j==3)
			{
                gc=g('c');
				if(fa>=gc) fa=gc-1;
			}
			if(a[1][j]=='='&&j==1)
			{
				ga=g('a');
				fa=max(fa,ga);
			}
			if(a[1][j]=='='&&j==2)
			{
				gb=g('b');
				fa=max(fa,gb);
			}
			if(a[1][j]=='='&&j==3)
			{
				gc=g('c');
				fa=max(fa,gc);
			}
	        return fa;
	}
    if(m=='b')
	{
		for(int j=1;j<4;j++)
			if(a[2][j]=='>'&&j==1) 
			{
				ga=g('a');
				if(fb<=ga) fb=ga+1;
			}
			if(a[2][j]=='>'&&j==2) 
			{
				gb=g('b');
				if(fb<=gb) fb=gb+1;
			}
			if(a[2][j]=='>'&&j==3) 
			{
				gc=g('c');
				if(fb<=gc) fb=gc+1;
			}
			if(a[2][j]=='<'&&j==1)
			{
                ga=g('a');
				if(fb>=ga) fb=ga-1;
			}
			if(a[2][j]=='<'&&j==2)
			{
                gb=g('b');
				if(fb>=gb) fb=gb-1;
			}
			if(a[2][j]=='<'&&j==3)
			{
                gc=g('c');
				if(fb>=gc) fb=gc-1;
			}
			if(a[2][j]=='='&&j==1)
			{
				ga=g('a');
				fb=max(fb,ga);
			}
			if(a[2][j]=='='&&j==2)
			{
				gb=g('b');
				fb=max(fb,gb);
			}
			if(a[2][j]=='='&&j==3)
			{
				gc=g('c');
				fb=max(fb,gc);
			}
			return fb;
	}
    if(m=='c')
	{
		for(int j=1;j<4;j++)
			if(a[3][j]=='>'&&j==1) 
			{
				ga=g('a');
				if(fc<=ga) fc=ga+1;
			}
			if(a[3][j]=='>'&&j==2) 
			{
				gb=g('b');
				if(fc<=gb) fc=gb+1;
			}
			if(a[3][j]=='>'&&j==3) 
			{
				gc=g('c');
				if(fc<=gc) fc=gc+1;
			}
			if(a[3][j]=='<'&&j==1)
			{
                ga=g('a');
				if(fc>=ga) fc=ga-1;
			}
			if(a[3][j]=='<'&&j==2)
			{
                gb=g('b');
				if(fc>=gb) fc=gb-1;
			}
			if(a[3][j]=='<'&&j==3)
			{
                gc=g('c');
				if(fc>=gc) fc=gc-1;
			}
			if(a[3][j]=='='&&j==1)
			{
				ga=g('a');
				fc=max(fc,ga);
			}
			if(a[3][j]=='='&&j==2)
			{
				gb=g('b');
				fc=max(fc,gb);
			}
			if(a[3][j]=='='&&j==3)
			{
				gc=g('c');
				fc=max(fc,gc);
			}
			return fc;
	}
}


int g(char n)
{
	int ga=1;
	int gb=1;
	int gc=1;
	int fa,fb,fc;
	if(n=='a') 
	{
	    for(int i=1;i<4;i++)
			if(a[i][1]=='>'&&i==1)
			{
				fa=f('a');
				if(fa<=ga) ga=fa-1;
			}
			if(a[i][1]=='>'&&i==2)
			{
				fb=f('b');
				if(fb<=ga) ga=fb-1;
			}
			if(a[i][1]=='>'&&i==3)
			{
				fc=f('c');
				if(fc<=ga) ga=fc-1;
			}
			if(a[i][1]=='<'&&i==1)
			{
				fa=f('a');
				if(fa>=ga) ga=fa+1;
			}
			if(a[i][1]=='<'&&i==2)
			{
				fb=f('b');
				if(fb>=ga) ga=fb+1;
			}
			if(a[i][1]=='<'&&i==3)
			{
				fc=f('c');
				if(fc>=ga) ga=fc+1;
			}
			if(a[i][1]=='='&&i==1)
			{
				fa=f('a');
				ga=max(ga,fa);
			}
			if(a[i][1]=='='&&i==2)
			{
				fb=f('b');
				ga=max(ga,fb);
			}
			if(a[i][1]=='='&&i==3)
			{
				fc=f('c');
				ga=max(ga,fc);
			}
		return ga;
	}
	if(n=='b') 
	{
		for(int i=1;i<4;i++)
			if(a[i][2]=='>'&&i==1)
			{
				fa=f('a');
				if(fa<=gb) gb=fa-1;
			}
			if(a[i][2]=='>'&&i==2)
			{
				fb=f('b');
				if(fb<=gb) gb=fb-1;
			}
			if(a[i][2]=='>'&&i==3)
			{
				fc=f('c');
				if(fc<=gb) gb=fc-1;
			}
			if(a[i][2]=='<'&&i==1)
			{
				fa=f('a');
				if(fa>=gb) gb=fa+1;
			}
			if(a[i][2]=='<'&&i==2)
			{
				fb=f('b');
				if(fb>=gb) gb=fb+1;
			}
			if(a[i][2]=='<'&&i==3)
			{
				fc=f('c');
				if(fc>=gb) gb=fc+1;
			}
			if(a[i][2]=='='&&i==1)
			{
				fa=f('a');
				gb=max(gb,fa);
			}
			if(a[i][2]=='='&&i==2)
			{
				fb=f('b');
				gb=max(gb,fb);
			}
			if(a[i][2]=='='&&i==3)
			{
				fc=f('c');
				gb=max(gb,fc);
			}
		return gb;
	}
	if(n=='c') 
	{
		for(int i=1;i<4;i++)
			if(a[i][3]=='>'&&i==1)
			{
				fa=f('a');
				if(fa<=gc) gc=fa-1;
			}
			if(a[i][3]=='>'&&i==2)
			{
				fb=f('b');
				if(fb<=gc) gc=fb-1;
			}
			if(a[i][3]=='>'&&i==3)
			{
				fc=f('c');
				if(fc<=gc) gc=fc-1;
			}
			if(a[i][3]=='<'&&i==1)
			{
				fa=f('a');
				if(fa>=gc) gc=fa+1;
			}
			if(a[i][3]=='<'&&i==2)
			{
				fb=f('b');
				if(fb>=gc) gc=fb+1;
			}
			if(a[i][3]=='<'&&i==3)
			{
				fc=f('c');
				if(fc>=gc) gc=fc+1;
			}
			if(a[i][3]=='='&&i==1)
			{
				fa=f('a');
				gc=max(gc,fa);
			}
			if(a[i][3]=='='&&i==2)
			{
				fb=f('b');
				gc=max(gc,fb);
			}
			if(a[i][3]=='='&&i==3)
			{
				fc=f('c');
				gc=max(gc,fc);
			}
		return gc;
	}
}

void main()
{
	cout<<"算符优先分析表:"<<endl;
	for(int i=0;i<4;i++)
		for(int j=0;j<4;j++)
		{
			cout<<a[i][j];
			cout<<" ";
			if (j==3) cout<<endl;
		}
	cout<<"算符优先函数:"<<endl;
	cout<<f('a')<<endl;
}

⌨️ 快捷键说明

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