- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用真值表法求主析取范式及主合取范式的实现汇编
实验报告( / 学年第一学期)课程名称离散数学实验名称利用真值表法求主析取范式及主合取范式的实现实验时间年月日指导单位指导教师学生姓名班级学号学院(系)专业实验报告实验名称利用真值表法求主析取范式及主合取范式的实现指导教师实验类型上机实验学时4实验时间实验目的和要求能够列出合式公式的真值表并给出相应主析取范式和主合取范式。二、实验环境(实验设备)硬件:PC机。软件:Code::Blocks(C++ )三、实验原理及内容内容:编程实现用真值表法求任意含三个以内变量的合式公式的主析取范式和主合取范式。原理:首先读入变元个数,然后读入合式公式,用堆栈的知识将中缀表达式转化为后缀表达式,调用否定、析取、合取、条件、双条件的函数计算P、Q、R取不同真值时合式公式的真值,然后输出真值表,调用计算主析取范式和主合取范式的函数并输出。程序:#includeiostream#includestring#includeconio.h#includewindows.husing 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;};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(){ if(top == -1) return false; top--; return true;}int p, q, r, s, t, u;int a, b, result;int v =0;int number;//用number表示变元的个数SeqStack stack(200);void Not() //否定{ a = stack.Top(); stack.Pop(); result = a == 1 ? 0 : 1; stack.Push(result);}void Or() //析取{ result = a + b; result = result 1 ? 1 : result; stack.Push(result);}void And() //合取{ result = a * b; stack.Push(result);}void If() //条件,b-a{ result = (b == 1 a == 0) ? 0 : 1; stack.Push(result);}void Doubleif() //双条件{ result = (b == a) ? 1 : 0; stack.Push(result);}bool CanIn(char out)//优先级的判断{ char in = stack.Top(); int i, o; switch(in) { case #:i = 0; break; case (:i = 1; break; case -:i = 3; break; case :i = 5; break; case |:i = 7; break; case :i = 9; break; case !:i = 11; break; case ):i = 12; break; } switch(out) { case #:o = 0; break; case (:o = 12; break
文档评论(0)