当前位置:首页 > 离散数学(MFC实现真值表、最短路径)实验报告
离散数学
实验报告
1
2
班级: 姓名: 学号:
年月日
实验1 命题逻辑系统
1. 实验目的
理解命题逻辑相关运算,增强逻辑推理能力
2. 实验设备
操作系统:Windows 7
开发环境:Visual Studio 2012
3. 实验要求
(1) 从键盘输入两个命题变元P和Q的真值,求他们的合取、析取、条件和
双条件运算的真值。
(2) 求任意一个给定命题公式的真值表,并根据真值表求主范式。
4. 实验内容
程序思路
在MFCApp.rc中创建IDD_MFCAPP_DIALOG对话框,绘制及各控件ID如图1-1所示。
IDC_RADIO1 IDC_RADIO2 IDC_EDIT_INFO IDC_COMBO_P IDC_EDIT IDC_COMBO_Q IDC_BUTTON_ACC IDC_EDIT_RESULT
图1-1对话框绘制
1
在MFCAppDlg类下,创建如下函数:
点击选择项目一:OnBnClickedRadio1()?更新框体内容至功能1 点击选择项目二:OnBnClickedRadio2()?更新框体内容至功能2 对真值P的值做出选择:OnSelChangeComboP()?调用Acc1() 对真值Q的值做出选择:OnSelChangeComboQ()?调用Acc1() 点击“计算按钮”:OnClickedButtonAcc()?调用Acc2()
Acc2()算法大致如下: (1) 输入命题公式。
(2) 在公式中寻找变元,添加变元至数组value,并输出真值表表头。
(3) 检查命题公式的正确性,不正确则以对话框提示用户并结束本算法,否
则继续执行。 (4) 初始化r=0
(5) 为各个变元指派真值,指派的值由r对应的二进制数决定。即利用二进
制数字转化为各变元的值。输出各个变元指派的值。 (6) 根据变元指派的真值计算出命题公式的值存入truth[r]。
(7) 根据命题公式的值决定将当前变元指派真值存入析合式的栈还是存入
合析式的栈。
(8) r对应的二进制进行累加,r=r+1,若r 执行(9) (9) 根据栈内内容输出析合范式和合析范式。 程序代码 此处给出主窗体的头文件及实现文件。其余具体代码详见源文件。 // MFCApplication1Dlg.h : 头文件 // #pragma once #include \#include \#include \ // CMFCApplication1Dlg 对话框 class CMFCApplication1Dlg : public CDialogEx { // 构造 public: CMFCApplication1Dlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 enum { IDD = IDD_MFCAPPLICATION1_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 2
共分享92篇相关文档