📄 main.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 + -