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

📄 1.cpp

📁 该程序可以化简卡诺图。首先输入真值
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include<iostream.h>
#include<string.h>

/*struct ge{
	int cell;
	int visit;
};*/
class Fshell
{
	public:
	Fshell();

	//struct ge a[4][4];
	int x;
	int a[4][4][2];
	//int b[4][4][5];
	//char c[4][4][4];
	input(int a);
	char zuijian[40];
	void print();
	void printstr();
	void add();
	int ecell(int i,int j);
	int fcell(int i,int j);
	int tcell(int i,int j);
	int ocell(int i,int j);
	//void quan(char &b;const ge &a);
};
void Fshell::printstr ()
{
	x--;
	zuijian[x]='\0';
	cout<<zuijian<<endl;
}
void Fshell::add()
{
	zuijian[x]='+';
	x++;
}
int Fshell::ecell(int i,int j)
{
	int p=1,q=1,m=i,n=j;
		for(m=0;m<4;m++)
		{if (a[m][j][0]==0)
		p=0;
		}
		for(m=0,n=(n+1)%4;m<4;m++)
		{if (a[m][n][0]==0)
		q=0;
		}
		if(p&&q)
		{for(m=0;m<4;m++)
		a[m][j][1]=1;
		for(m=0,n=(j+1)%4;m<4;m++)
			a[m][n][1]=1;
		switch(j)
		{
		case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;break;
		case(1):zuijian[x]='B';x++;break;
		case(2):zuijian[x]='A';x++;break;
		case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;break;
		default:cout<<"error !"<<endl;
		}
		return 1;//执行存储结果
		}
		p=q=1;
		for(m=0;m<4;m++)
		{if (a[m][j][0]==0)
		p=0;
		}
		for(m=0,n=(j-1+4)%4;m<4;m++)
		{if (a[m][j][0]==0)
		q=0;
		}
		if(p&&q)
		{for(m=0;m<4;m++)
		a[m][j][1]=1;
		for(m=0,n=(j-1+4)%4;m<4;m++)
			a[m][n][1]=1;
		switch(j)
		{
		case(0):zuijian[x]='B';x++;zuijian[x]='\'';x++;break;
		case(1):zuijian[x]='A';x++;zuijian[x]='\'';x++;break;
		case(2):zuijian[x]='B';x++;break;
		case(3):zuijian[x]='A';x++;break;
		default:cout<<"error !"<<endl;
		}
		return 1;//执行存储结果
		}
		p=q=1;
		for(n=0;n<4;n++)
		{if (a[i][n][0]==0)
		p=0;
		}
		for(n=0,m=(i+1)%4;n<4;n++)
		{if (a[i][n][0]==0)
		q=0;
		}
		if(p&&q)
		{for(n=0;n<4;n++)
		a[i][n][1]=1;
		for(n=0,m=(i+1)%4;n<4;n++)
			a[i][n][1]=1;
		switch(i)
		{
		case(0):zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
		case(1):zuijian[x]='D';x++;break;
		case(2):zuijian[x]='C';x++;break;
		case(3):zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
		default:cout<<"error !"<<endl;
		}
		return 1;//执行存储结果
		}
		p=q=1;
				for(n=0;n<4;n++)
		{if (a[i][n][0]==0)
		p=0;
		}
		for(n=0,m=(i-1+4)%4;n<4;n++)
		{if (a[m][n][0]==0)
		q=0;
		}
		if(p&&q)
		{for(n=0;n<4;n++)
		a[i][n][1]=1;
		for(n=0,m=(i-1+4)%4;n<4;n++)
			a[m][n][1]=1;
		switch(i)
		{
		case(0):zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
		case(1):zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
		case(2):zuijian[x]='D';x++;break;
		case(3):zuijian[x]='C';x++;break;
		default:cout<<"error !"<<endl;
		}
		return 1;//执行存储结果
	}
		else 
			return 0;
}
int Fshell::fcell(const int i,const int j)
{
	int p=1,q=1,m=i,n=j;
		for(m=0;m<4;m++)//纵行情况
		{if (a[m][n][0]==0)
		p=0;
		}
		if(p==1)
		{
			switch(n)
			{
			case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
			zuijian[x]='B';x++;zuijian[x]='\'';x++;break;
		    case(1):zuijian[x]='A';x++;zuijian[x]='\'';x++;
			zuijian[x]='B';x++;break;
		    case(2):zuijian[x]='A';x++;zuijian[x]='B';x++;break;
		    case(3):zuijian[x]='A';x++;zuijian[x]='B';x++;
			zuijian[x]='\'';x++;break;
		    default:cout<<"error !"<<endl;
		    }
			for(m=0;m<4;a[m][j][1]=1,m++);

			return 1;//执行存储结果
	    }
		p=1;
		for(n=0;n<4;n++)//横行情况
		{if (a[i][n][0]==0)
		p=0;
		}
		if(p==1)
		{for(n=0;n<4;n++)
		a[i][n][1]=1;
		switch(i)
		{
			case(0):zuijian[x]='C';x++;zuijian[x]='\'';x++;
			zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
		    case(1):zuijian[x]='C';x++;zuijian[x]='\'';x++;
			zuijian[x]='D';x++;break;
		    case(2):zuijian[x]='C';x++;zuijian[x]='D';x++;break;
		    case(3):zuijian[x]='C';x++;zuijian[x]='D';x++;
			zuijian[x]='\'';x++;break;
		    default:cout<<"error !"<<endl;
		    }
		return 1;//执行存储结果
		}
        if (a[i][j][0]&&a[(i+1)%4][j][0]&&
			a[(i+1)%4][(j+1)%4][0]&&a[i][(j+1)%4][0])//右下方方块
		{	a[i][j][1]=a[(i+1)%4][j][1]=
			a[(i+1)%4][(j+1)%4][1]=a[i][(j+1)%4][1]=1;
			switch(i)
			{
			case(0):switch(j)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(1):switch(j)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='D';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='D';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='D';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='D';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(2):switch(j)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='C';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='C';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='C';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='C';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(3):switch(j)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			default:cout<<"error !"<<endl;
		}
		return 1;
		}
        if (a[i][j][0]*a[(i+3)%4][j][0]*
			a[(i+3)%4][(j+3)%4][0]*a[i][(j+3)%4][0])//左上方方块
		{	a[i][j][1]=a[(i+3)%4][j][1]=
			a[(i+3)%4][(j+3)%4][1]=a[i][(j+3)%4][1]=1;
			switch((i+3)%4)
		{
			case(0):switch((j+3)%4)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(1):switch((j+3)%4)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='D';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='D';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='D';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='D';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(2):switch((j+3)%4)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='C';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='C';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='C';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='C';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(3):switch((j+3)%4)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			default:cout<<"error !"<<endl;
		}
		return 1;
		}
        if (a[i][j][0]*a[(i+3)%4][j][0]*
			a[(i+3)%4][(j+1)%4][0]*a[i][(j+1)%4][0])//右上方方块
		{	a[i][j][1]=a[(i+3)%4][j][1]=
			a[(i+3)%4][(j+1)%4][1]=a[i][(j+1)%4][1]=1;
			switch((i+3)%4)
		{
			case(0):switch(j)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(1):switch(j)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='D';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='D';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='D';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='D';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(2):switch(j)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='C';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='C';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='C';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='C';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(3):switch(j)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			default:cout<<"error !"<<endl;
		}
		return 1;
		}
        if (a[i][j][0]*a[(i+1)%4][j][0]*
			a[(i+1)%4][(j+3)%4][0]*a[i][(j+3)%4][0])//左下方方块
		{	a[i][j][1]=a[(i+1)%4][j][1]=
			a[(i+1)%4][(j+3)%4][1]=a[i][(j+3)%4][1]=1;
			switch(i)
		{
			case(0):switch((j+3)%4)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='C';x++;zuijian[x]='\'';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(1):switch((j+3)%4)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='D';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='D';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='D';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='D';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(2):switch((j+3)%4)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='C';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='C';x++;break;
					 case(2):zuijian[x]='A';x++;
						 zuijian[x]='C';x++;break;
					 case(3):zuijian[x]='B';x++;zuijian[x]='\'';x++;
						 zuijian[x]='C';x++;break;
					 default:cout<<"error !"<<endl;
					}break;
			case(3):switch((j+3)%4)
					{case(0):zuijian[x]='A';x++;zuijian[x]='\'';x++;
				zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
			         case(1):zuijian[x]='B';x++;
						 zuijian[x]='D';x++;zuijian[x]='\'';x++;break;
					 case(2):zuijian[x]='A';x++;

⌨️ 快捷键说明

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