【离散数学】实验一 利用真值表法求取主析取范式以及主合取范式的实现
来源:互联网 发布:华为盒子电视直播软件 编辑:程序博客网 时间:2024/06/08 19:39
内容:
针对给定的包含任意个变量的真值表,编程实现用真值表法求取其所对应的主析取范式和主合取范式。
要求:
能够掌握通过真值表求取相应主析取和主合取范式的方法及原理。
代码:
/* * Author: Tob_yuhong * Function: 针对给定的包含任意个变量的真值表,编程实现用真值表法求取其所对应的主析取范式和主合取范式。 * 运行环境:Code::Blocks 13.12 */#include <iostream>#include <cstdio>#include <cstdlib>#include <vector>#include <cstring>#include <cmath>#include <fstream>using namespace std;const int LEN = 140 + 10; //定义数组长度char arr[LEN]; //用来存放2^n次方个字符,n表示变量个数int brr[LEN][4+10]; //brr用来存放真值表int beg = 80; //字符P对应的ASCII码int sta1 = 0, sta2 = 0; //sta1表示真值为T的个数,sta2表示真值为F的个数int main(){// freopen("datain.txt", "r", stdin); memset(brr, 0, sizeof(brr)); int num; //变量个数 cout << "请输入变量个数 : "; cin >> num; cout << endl; int sum = pow(2, num); //2^n cout << "请输入"<< sum << "个字符(用T 或 F表示) : "; for(int i = 1; i <= sum; i++) { cin >> arr[i]; if(arr[i] == 'T') sta1++; else sta2++; } cout << endl; //处理真值表 int cnt1 = 0, cnt2 = 1; for(int i = sum-1; i >= 0; i--) { cnt1 = 0; int val=i; while(cnt1 < num) { cnt1++; brr[cnt2][cnt1] = val%2; val = val/2; } cnt2++; } cout << "输出公式对应的真值表 : " << endl; for(int i = 1; i <= num ;i++) { cout << char(beg++) << " "; } cout << 'A'; cout << endl; cout << "———————————" << endl; beg = 80; for(int i = 1; i <= sum; i++) { for(int j = num; j >= 1; j--) { if(brr[i][j] == 1) cout << 'T' << " "; else cout << 'F' << " "; } cout << arr[i]; cout << endl; } cout << endl; int k = 0; cout << "输出主析取范式:" << endl; for(int i = 1; i <= sum; i++) { if(arr[i] == 'T') { k++; cout << '('; for(int j = num; j >= 1; j--) { if(brr[i][j] == 1) { cout << (char)(beg++); } else { cout << "┓" << (char)(beg++); } if(j != 1) cout << "∧"; } cout << ')'; if(k < sta1) cout << "∨"; } beg = 80; } cout << endl << endl; cout << "输出主合取范式:" << endl; for(int i = 1; i <= sum; i++) { if(arr[i] == 'F') { k++; cout << '('; for(int j = num; j >= 1; j--) { if(brr[i][j] == 0) { cout << (char)(beg++); } else { cout << "┓" << (char)(beg++); } if(j != 1) cout << "∨"; } cout << ')'; if(k < sta2) cout << "∧"; } beg = 80; } cout << endl; return 0;}
运行结果示意:
测试数据:
/*
3
T F F T F F F T
*/
2 0
- 【离散数学】实验一 利用真值表法求取主析取范式以及主合取范式的实现
- 南邮离散数学实验 利用真值表法求取主析取范式以及主合取范式的实现
- 利用真值表法求取主析取范式以及主合取范式的实现
- 南邮离散数学实验-利用真值表输出主析取范式主合取范式
- 利用真值表法求主合取范式及主析取范式的实现
- 南邮离散数学实验1 (简单版) 根据真值求真值表和主范式
- 离散数学实践:真值表与范式
- 南邮离散数学实验1 (栈版) 根据表达式求真值表和主范式
- 离散数学之主析取范式,主合取范式
- 「离散数学」 打印任意命题公示的真值表和主范式
- C++实现离散数学求主合取范式和主析取范式
- 离散数学输入表达式打印真值表和主析/合取范式
- 离散数学实验 命题变元的运算,真值表....
- 离散数学 求命题公式的主范式
- 关于离散数学的真值表的求解
- 主析取范式与主合取范式
- 离散数学—求主范式
- C++实现求主析取范式、主合取范式
- 深入理解 Docker 镜像 json 文件
- 股市猜测6个历史和未来的最高最低点位
- SQL Server CROSS APPLY和OUTER APPLY的应用详解
- maven 构建 全注解 spring mvc + mybatis mysql 项目
- 编程日记-Python-2015.08.30
- 【离散数学】实验一 利用真值表法求取主析取范式以及主合取范式的实现
- UVa 10976:Fractions Again?!(水题)
- opencv学习笔记(四)-视频播放控制
- hdu 4507 吉哥系列故事——恨7不成妻 数位dp
- Ehcache详细解读
- objective-C编程 初始化方法摘要
- 用nt6 hdd installer安装win7 64位出错
- 【武大选课系统】欠费提示的暴力解决方法
- git命令总结