【离散数学】给出真值表求其对应的主范式

【离散数学】给出真值表求其对应的主范式_第1张图片
分析:
由已经学过的知识和编程基础知识分析该题:我认为主要难点有两个:第一个是真值表的输出问题
第二个是主析取范式或者主合取范式的输出问题。
对于第一个问题,可以利用真值与二进制之间的关系(1代表T,0代表F)来解决,对于第二个问题,需要在完成第一步的前提下·实现,因此,我采取的办法是先在第一步中统计用户输入的T或者F的个数,然后在一个数组中循环储存变量名称,之后
1.遍历搜索真值为T的行
2.遍历判断该行所有变量的真值,T则输出变量,F则输出变量的否定,并加上相应的V或者∧,
3.当遍历查询到的T的个数与第一步用户输入的T的个数相等时,判定为输出结束。
同理可以实现主合取范式的输出.
举个例子,当我输入2个变量时:运行效果图如下
【离散数学】给出真值表求其对应的主范式_第2张图片
当我输入三个变量时:
【离散数学】给出真值表求其对应的主范式_第3张图片
附上源代码:

附:源代码如下:
/*****************
**** 名称:离散数学实验作业:给真值表求主范式
**** 时间:2018/10/22
**** 作者:知非
******************/ 





#include 
#include 
using namespace std;
int main()
{
	int number,charnumber,count=0,count1=0,count2,countT,numberT,m,q,i,n;
	char b[]={'P','Q','R','S','T'};
	cout<<"请输入变量的个数:"<>number;
	charnumber=pow(2,number);
	char a[charnumber],c[number*charnumber],d[number*charnumber];
	cout<<"请输入 "<>a[i];
		if(a[i]=='T')
		count1++;	
	}//输入变量值,并计数T出现的个数 
	for(i=0;i

你可能感兴趣的:(离散数学)