南邮离散数学实验-利用真值表输出主析取范式主合取范式
来源:互联网 发布:什么是网络喷子 编辑:程序博客网 时间:2024/06/06 02:18
要求:
输入真值表(1/0),输出相应的主析取范式和主合取范式。
#include<iostream>#include<math.h>using namespace std;int Value[10000][10000];char Variable[7]={'-','A','B','C','D','E','F'}; class Form{public:Form(int nn){n=nn; k=pow(2,nn);}//构造函数void Form_Input();//真值表输入void Form_Output();//真值表输出void CNF_Output();//合取范式输出void DNF_Output();//析取范式输出private:int n;//n为变量的个数int k;//k为大、小项个数};void Form::Form_Input() {cout<<"Please input the value(1/0):"<<endl;for(int i=0;i<k;i++){cin>>Value[i][0];//输出合式公式的真值 P Q R 开始}int col=0;while(k/2) //构建真值表 对数组进行复制 1 0{k=k/2; //k的值不能改变 代表了循环次数col++;//列数 //每一次从新的一列开始复制int value=0; int i=0;for(;i<pow(2,n);i++) { if(value==1&&!(i%k)) value=0;else if(value==0&&!(i%k)) value=1;Value[i][col]=value;}}k=pow(2,n);//k复位}void Form::Form_Output(){cout<<"the value is:"<<endl;for(int j=0;j<n+1;j++)//输出变元{cout<<Variable[j]<<" ";if(j==n) cout<<endl;}for(int i=0;i<k;i++)//输出Value数组for(int j=0;j<n+1;j++){cout<<Value[i][j]<<" ";if (j==n) cout<<endl;}}void Form::CNF_Output(){cout<<"CNF:"<<endl;int count=-1;//需要输出的符号个数for(int t=0;t<k;t++) if(Value[t][0]==1) count++;for(int i=0;i<k;i++) //输出每一行的大项{if(Value[i][0]==1) //需要输出的项{for(int j=1;j<=n;j++){if(!Value[i][j]) cout<<"┐";cout<<Variable[j];if(j<n) cout<<"∨";}if(i<k&&count) {cout<<" ∧ ";count--;}}}cout<<endl;}void Form::DNF_Output(){cout<<"DNF:"<<endl;int count=-1;//需要输出的符号个数for(int t=0;t<k;t++) if(Value[t][0]==0) count++;for(int i=0;i<k;i++) //输出每一行的小项{if(Value[i][0]==0) //需要输出的项{for(int j=1;j<=n;j++){if(!Value[i][j]) cout<<"┐";cout<<Variable[j];if(j<n) cout<<"∧";}if(i<k&&count) {cout<<" ∨ ";count--;}}}cout<<endl;}void main(){int n;cout<<"Please input Variable num:";cin>>n;Form A(n);A.Form_Input();A.Form_Output();A.CNF_Output();A.DNF_Output();}
1 0
- 南邮离散数学实验-利用真值表输出主析取范式主合取范式
- 南邮离散数学实验 利用真值表法求取主析取范式以及主合取范式的实现
- 【离散数学】实验一 利用真值表法求取主析取范式以及主合取范式的实现
- 南邮离散数学实验1 (简单版) 根据真值求真值表和主范式
- 南邮离散数学实验1 (栈版) 根据表达式求真值表和主范式
- 离散数学实践:真值表与范式
- 利用真值表法求取主析取范式以及主合取范式的实现
- 离散数学之主析取范式,主合取范式
- 利用真值表法求主合取范式及主析取范式的实现
- 「离散数学」 打印任意命题公示的真值表和主范式
- 离散数学输入表达式打印真值表和主析/合取范式
- C++实现离散数学求主合取范式和主析取范式
- 主析取范式与主合取范式
- 离散数学实验 命题变元的运算,真值表....
- 离散数学—求主范式
- 范式
- 范式
- 范式
- Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php
- 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(一)
- UVa10246 - Asterix and Obelix(最短路径变形)
- Atitit.软件GUI按钮与仪表盘(01)--报警系统--
- linux LD_LIBRARY_PATH环境变量
- 南邮离散数学实验-利用真值表输出主析取范式主合取范式
- hdoj 1267 下沙的沙子有几粒? 【DP】
- 滚轮滚动 Webkit IE Moz的兼容
- 跟我一起学写jQuery插件开发方法(附完整实例及下载)
- Fragments for background processing
- java基础
- Atitit.软件按钮与仪表盘(13)--全文索引操作--db数据库子系统mssql2008
- LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
- [Linux]非阻塞模式下socket发送数据