利用真值表法求主析取范式及主合取范式的实现

发布时间 : 星期六 文章利用真值表法求主析取范式及主合取范式的实现更新完毕开始阅读

实验报告

( / 学年第一学期)

课程名称

离散数学

实验名称 利用真值表法求主析取范式及主合取范式的

实现

实验时间 指导单位 指导教师

月 日

学生姓名 学院(系)

班级学号 专业

实验报告

实验名称 利用真值表法求主析取范式及主合取范式的实现 实验类型 上机 实验学时 4 实验时间 指导教师 一、 实验目的和要求 能够列出合式公式的真值表并给出相应主析取范式和主合取范式。 二、实验环境(实验设备) 硬件:PC机。 软件:Code::Blocks(C++ ) 三、实验原理及内容 内容:编程实现用真值表法求任意含三个以内变量的合式公式的主析取范式和主合取范式。 原理:首先读入变元个数,然后读入合式公式,用堆栈的知识将中缀表达式转化为后缀表达式,调用否定、析取、合取、条件、双条件的函数计算P、Q、R取不同真值时合式公式的真值,然后输出真值表,调用计算主析取范式和主合取范式的函数并输出。 2

程序: #include #include #include #include using namespace std; string OriginalForm; //原式 string Hequ; //主合取范式 string Xiqu; //主析取范式 class SeqStack//建立一个堆栈,利用将中缀表达式转为后缀表达式 { public: SeqStack(int mSize); ~SeqStack(); char Top(); bool Push(char x); bool Pop(); private: char *st; int top; int maxtop; }; 3

SeqStack::SeqStack(int mSize) { maxtop = mSize - 1; top = -1; st = new char[mSize]; } SeqStack::~SeqStack() { delete[]st; } char SeqStack::Top() { return st[top]; } bool SeqStack::Push(char x) { if(top == maxtop) return false; st[++top] = x; return true; } bool SeqStack::Pop() 4

联系合同范文客服:xxxxx#qq.com(#替换为@)