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

📄 main.cpp

📁 by Quine and McCluskey
💻 CPP
字号:
# include "Q-M.h"
# define MAX_CUBES 50
int main()
{
	CUBE cubes[MAX_VARS+1][MAX_CUBES];
	int covered[MAX_VARS+1][MAX_CUBES];
	int numCubes[MAX_VARS+1];
	int j, k, p;// Indices into the cubes or covered array.
	CUBE tempCube;
	int found;
	// Initialize number of m-cubes at each level m.
	int m;		// Value of m in an m-cube, i.e., “level m.”
	for (m=0; m<MAX_VARS+1; m++)
	{
		numCubes[m] = 0;
	}

	// Read a list of minterms (0-cubes) supplied by the user, storing them
	// in the cubes[0, j] subarray, setting covered[0, j] to false for each
	// minterm, and setting numCubes[0] to the total number of minterms read.
	ReadMinterms;

	for (m=0; m<MAX_VARS; m++)				// Do for all levels except the last
	{
		for (j=0; j<numCubes[m]; j++)		// Do for all cubes at this level
		{
			for (k=j+1; j<numCubes[m]; k++) // Do for other cubes at this level
			{
				if (Combinable(cubes[m][j], cubes[m][k]))
				{
					// Mark the cubes as covered.
					covered[m][j] = true;
					covered[m][k] = true;
					// Combine into an (m+1)-cube, store in tempCube.
					Combine(cubes[m][j], cubes[m][k], &tempCube);
					found = false;			//See if we've generated this one before.
					for (p=0;p<numCubes[m+1]; p++)
					{
						if (EqualCubes(cubes[m+1][p], tempCube))
						{
							found = true;
						}
					}
					if (!found)
					{
						// Add the new cube to the next level.
						numCubes[m+1] += 1;
						cubes[m+1][numCubes[m+1]-1] = tempCube;
						covered[m+1][numCubes[m+1]-1] = false;
					}
				}
			}
		}
	}
	for (m=0; m<MAX_VARS; m++)				//Do for all levels
	{
		for (j=0; j<numCubes[m]; j++)		//Do for all cubes at this level
		{
			// Print uncovered cubes -- these are the prime implicants.
			if (!covered[m][j])
			{
				PrintCube(cubes[m][j]);
			}
		}
	}
	return 0;
}

⌨️ 快捷键说明

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