文章目录

  • 实验要求
  • 二 编程思路分析
    • 困难所在
  • 二 完整代码

实验要求

  1. 实验类型:设计性
  2. 实验目的
    • 通过算法设计并编程实现,使学生掌握利用计算机语言判别合式公式主范式的基本方法。
  3. 实验内容
    • 给定合式公式(任意数量命题变项)的真值表可判断该公式的主析取范式和主合取范式。
  4. 实验仪器设备或软件环境及工具
    • 软件环境与编程语言不限。
      5、实验要求
    • 复习合式公式主析取范式与主合取范式的定义,实验由一人一组完成。所编程序能够通过编译,并能够对给定任意数量命题变项的合式公式判断是否为主析取范式或主合取范式。
  5. 实验报告要求
    1. 写出实验过程中遇到的问题及其解决过程。
    2. 写出相应算法,并编写一个程序求出给定合式公式(任意数量命题变项)的真值表可判断该公式的主析取范式和主合取范式。。
    3. 写出实验结束时的程序清单及运行结果及实验总结

二 编程思路分析

  • 确定好变元的个数,同时计算出可能的取值种类。【即真值表的行数】
  • 然后通过逻辑处理,打印出正确的结果。

困难所在

  • 在打印,真值表的各个变元的真值时,如何巧妙计算?
  • 通过真值表的下标计算

二 完整代码

import java.util.Scanner;/*** @author 缘友一世* date 2022/12/26-16:52*/
public class demo01 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int nums=0;String str=" ";String str2="pqrstuvwxyz";System.out.print("请输入变量的个数:");if(scanner.hasNextInt()) {nums= scanner.nextInt();}int[][] arr=new int[(int)Math.pow(2,nums)][nums];System.out.print("请输入"+Math.pow(2,nums)+"个字符<用T 或 F表示>:");scanner.nextLine();if(scanner.hasNextLine()) {str=scanner.nextLine();}scanner.close();String[] res = str.split(" ");//System.out.println(res.length);for(int i=0;i<nums;i++) {System.out.print(str2.charAt(i)+"\t");}System.out.println("A");System.out.println("---------------");for(int i=0;i<Math.pow(2,nums);i++) {for(int j=0;j<nums;j++) {arr[i][j]=(int)(i/Math.pow(2,nums-j-1)%2);if(arr[i][j]==1) {System.out.print("T\t");}else {System.out.print("F\t");}}System.out.println(res[i]);}String str3="";for(int i=0;i<Math.pow(2,nums);i++) {str3+=res[i];}System.out.println("输出主析取范式:");int lastTrueNum=str3.lastIndexOf('T');for(int i=0;i<Math.pow(2,nums);i++) {if(res[i].equals("T")) {System.out.print("<");for(int j=0;j<nums;j++) {if(arr[i][j]==1) {System.out.print(str2.charAt(j));if(j!=nums-1 ) {System.out.print("/\\");}}if(arr[i][j]==0) {System.out.print("!"+str2.charAt(j));if(j!=nums-1 ) {System.out.print("/\\");}}}System.out.print(">");if(i!=lastTrueNum) {System.out.print("\\/");}}}System.out.print("\n主合取范式为\n");lastTrueNum=str3.lastIndexOf('F');for(int i=0;i<Math.pow(2,nums);i++) {if(res[i].equals("F")) {System.out.print("<");for(int j=0;j<nums;j++) {if(arr[i][j]==0) {System.out.print(str2.charAt(j));if(j!=nums-1 ) {System.out.print("\\/");}}if(arr[i][j]==1) {System.out.print("!"+str2.charAt(j));if(j!=nums-1 ) {System.out.print("\\/");}}}System.out.print(">");if(i!=lastTrueNum) {System.out.print("/\\");}}}}
}

离散数学实践一编程判断主析取范式和主合取范式【java实现】相关推荐

  1. 离散数学范式c语言实验报告,离散数学实验报告-利用真值表法求主析取范式及主合取范式的实现...

    1.实 验 报 告( / 学年 第 一 学期)课程名称离散数学实验名称利用真值表法求主析取范式及主合取范式的实现实验时间年月日指导单位指导教师学生姓名班级学号学院(系)专 业 实 验 报 告实验名称利 ...

  2. 【离散数学】Java语言实现利用真值表法求主析取范式和主合取范式

    C++版本的看这个链接: [离散数学]C++语言实现利用真值表法求主析取范式和主合取范式_zhtstar的博客-CSDN博客https://blog.csdn.net/weixin_56319483/ ...

  3. 【离散数学】C++语言实现利用真值表法求主析取范式和主合取范式

    Java版本的如下链接所示: Java语言实现利用真值表法求主析取范式和主合取范式_zhtstar的博客-CSDN博客https://blog.csdn.net/weixin_56319483/art ...

  4. 用c语言编程求主析取范式,求主析取范式.cpp · wangzhankun/C-Programming-Learn - Gitee.com...

    /* 实现功能:输入命题公式的合式公式,求出公式的真值表,并输出该公式的主合取范式和主析取范式. 输入:命题公式的合式公式 输出:公式的主析取范式和主析取范式,输出形式为:" mi ∨ mj ...

  5. 离散数学 求命题公式的主析取范式和主合取范式

    Description 输入命题公式的合式公式,求出公式的真值表,并输出该公式的主合取范式和主析取范式. Input 命题公式的合式公式 Output 公式的主析取范式和主合取范式,输出形式为:&qu ...

  6. 离散实验 真值表求主析取范式、主合取范式的计算机语言实现

    离散数学 实验一 标题:真值表求主析取范式.主合取范式的计算机语言实现 其他课程的一些其他实验源码也可在本人github主页找到哦 链接如下:https://github.com/Schiz0mani ...

  7. 使用C++求命题公式的主析取范式与主合取范式

    最近的离散数学的一个上机作业,要求任意输入一个命题公式,求它的真值表与主析取范式和主合取范式.其中的命题连接词都是用特殊符号来表示(怕麻烦--),并最终选择使用C++来编写程序. 先贴代码: // 五 ...

  8. 求主析取范式与主合取范式

    定义设A为恰含命题变元p1,-,pn的公式.公式A称为A的主析(合)取范式(majordisjunctive(conjunctive)normal form),如果A是A的析(合)取范式,并且其每个合 ...

  9. matlab析取范式求主析取范式用电脑,(p∧q)∨r 求其主析取范式 再用主析取范式求主合取范式...

    共回答了21个问题采纳率:90.5% 主合取范式:若干个极大项的合取. 主析取范式:若干个极小项的析取. 例, 求公式(p∧q)∨r的主析取范式及主合取范式. 主析取范式: (p∧q)∨r (p∧q∧ ...

最新文章

  1. iOS开发 最近开发了蓝牙模块,在此记录总结一下
  2. 安全***需要掌握的东西
  3. JavaSE基础之构造器(构造方法)和一般方法
  4. smarty2和smarty3
  5. shell取消键盘回显
  6. 同类型的mapping不上
  7. 在 Visual C++ 中使用内联汇编
  8. 项目周期一般多久_深圳app开发公司的软件开发要多久?
  9. 在openEuler上做开发?这个大赛拿出30万寻找开源的yyds
  10. canal 入门(2)
  11. shell编程之 cut命令详解
  12. 在线分数加减乘除计算器
  13. struts2第一个程序的详解(配图)
  14. 拓端tecdat|R语言逐步多元回归模型分析长鼻鱼密度影响因素
  15. OpenCV-特征提取与检测(02、Shi-Tomasi角点检测)
  16. iOS备忘录之IOS开发的一些网站(看看还是不错的)
  17. 郝斌老师 c语言学习笔记
  18. 记某次“静态浮动路由+urpf导致”网络故障排查
  19. 免费DNS服务器地址,谁家速度快
  20. Error splicing file: No space left on device

热门文章

  1. 江哥带你玩转C语言 | 13- 一级指针和多级指针
  2. 在商家眼中,聚合支付有什么好处
  3. 重装WindowsXP系统之前必须进行的备份
  4. 记录一下在浏览器端利用微信地图定位接口和百度地图定位接口实现高精度定位的开发心得
  5. 虚拟机安装红帽liunx
  6. DNS域名解析负载均衡
  7. Android 5.0 Phone 模块介绍
  8. 03.鸿蒙HarmonyOS卡片 状态栏透明和代码设置渐变色
  9. 404 not found 背后的布道师
  10. JAVA题目:打印出如下图案(菱形)