逻辑命题公式计算

合集下载

逻辑学公式

逻辑学公式

2.负命题的等值推理(命题)(1)联言命题的负命题:⌝(p ∧ q)↔⌝ p ∨⌝ q(2)相容选言命题的负命题:⌝(p ∨ q)↔⌝ p ∧⌝ q(3)不相容选言命题的负命题:⌝(p ∨q)↔(p ∧ q)∨(⌝ p ∧⌝ q)(4)充分条件假言命题的负命题:⌝(p → q)↔ p ∧⌝ q(5)必要条件假言命题的负命题:⌝(p ← q)↔⌝ p ∧ q(6)充分必要条件假言命题的负命题:⌝(p ↔ q)↔(p ∧⌝ q)∨(⌝ p ∧ q)(7)负命题的负命题:⌝(⌝ p)↔ p3,命题推理的有效式(1).联言推理1)联言推理分解式:p ∧ q → p 或p ∧ q →q2)联言推理合成式:p, q → p ∧ q(2). 选言推理1)相容选言推理的否定肯定式:(p ∨ q)∧⌝ p → q 或(p ∨ q)∧⌝ q→ p2)不相容选言推理的否定肯定式:(p ∨q)∧⌝ p → q 或(p ∨q)∧⌝ q → p3)不相容选言推理的肯定否定式:(p ∨q)∧ p →⌝ q 或(p ∨q)∧ q→⌝ p (3).假言命题推理1)充分条件假言推理的肯定前件式:(p → q)∧ p → q2)充分条件假言推理的否定后件式:(p → q)∧⌝ q →⌝ p3)必要条件假言推理的否定前件式:(p ← q)∧⌝ p →⌝ q4)必要条件假言推理的肯定后件式:(p ← q)∧ q → p5)充要条件假言推理的肯定前件式:(p ↔ q)∧ p → q6)充要条件假言推理的肯定后件式:(p ↔ q)∧ q → p7)充要条件假言推理的否定前件式:(p ↔ q)∧⌝ p →⌝ q8)充要条件假言推理的否定后件式:(p ↔ q)∧⌝ q →⌝ p5,A、E、I、O、a、e六种性质判断主、谓项的周延情况6,A、E、I、O四种判断的真假情况列表7,A、E、I、O四种性质判断之间的真假关系,可用如下的逻辑方阵表示:A 反对关系 E差矛矛差等盾盾等关关关关系系系系I 下反对关系 O矛盾关系: A与E,I与O,不能同真,不能同假反对关系: A与E 不能同真,可以同假下反对关系:I与O 可以同真,不能同假差等关系: A与I,E与O,可以同假,可以同真8,对当关系推理矛盾关系: SAP ↔⌝SOP SEP ↔⌝SIP SIP ↔⌝SEP SOP ↔⌝SAP 差等关系: SAP→SIP SEP→SOP ⌝SIP→⌝SAP ⌝SOP→⌝SEP反对关系: SAP→⌝SEP SEP→⌝SAP下反对关系:⌝SIP→SOP ⌝SOP→SIP9,命题变形推理(1)换质法: SAP ↔ SEP~ SEP~ ↔ SAP SEP ↔ SAP~ SAP~ ↔ SEPSIP ↔ SOP~ SOP~ ↔ SIP SOP ↔ SIP~ SIP~ ↔ SOP(2)换位法: SAP → PIS SEP ↔ PES SEP → POS SIP ↔ PIS10,三段论的格和式一、判断主项、谓项周延与否的四句话1.全称或单称判断的主项都周延。

逻辑判断推理中常用的逻辑公式

逻辑判断推理中常用的逻辑公式

逻辑命题与推理必然性推理(演绎推理):对当关系推理、三段论、复合命题推理、关系推理和模态推理可能性推理:归纳推理(枚举归纳、科学归纳)、类比推理命题直言命题的种类:(AEIOae)⑴全称肯定命题:所有S是P(SAP)⑵全称否定命题:所有S不是P(SEP)⑶特称肯定命题:有的S是P(SIP)⑷特称否定命题:有的S不是P(SOP)⑸单称肯定命题:某个S是P(SaP)⑹单称否定命题:某个S不是P(SeP)直言命题间的真假对当关系:矛盾关系、(上)反对关系、(下)反对关系、从属关系矛盾关系:具有矛盾关系的两个命题之间不能同真同假。

主要有三组:SAP与SOP之间。

“所有同学考试都几个了”与“有些同学考试不及格”SEP与SIP之间。

“所有同学考试不及格”与“有些同学考试及格”SaP与SeP之间。

“张三考试及格”与“张三考试不及格”上反对关系:具有上反对关系的两个命题不能同真(必有一假),但是可以同假。

即要么一个是假的,要么都是假的。

存在于SAP与SEP、SAP与SeP、SEP与SaP之间。

下反对关系:具有下反对关系的两个命题不能同假(必有一真),但是可以同真。

即要么一个是真的,要么两个都是真的。

存在于SIP与SOP、SeP与SIP、SaP与SOP之间。

从属关系(可推出关系):存在于SAP与SIP、SEP与SOP、SAP与SaP、SEP与SeP、SaP与SIP、SeP与SOP六种直言命题之间存在的对当关系可以用一个六角图形来表示,“逻辑方阵图”SAP SEPSaP SePSIP SOP直言命题的真假包含关系全同关系、真包含于关系、真包含关系、交叉关系、全异关系复合命题:负命题、联言命题、选言命题、假言命题负命题的一般公式:并非P联言命题公式:p并且q “并且、…和…、既…又…、不但…而且、虽然…但是…”选言命题:相容的选言命题、不相容的选言命题相容的选言命题公式:p或者q“或、或者…或者…、也许…也许…、可能…可能…”【一个相容的选言命题是真的,只有一个选言支是真的即可。

逻辑推理公式

逻辑推理公式

直言命题所有的都是上反对必有一假所有的都不是包容矛盾包容有的是必有一真下反对有的不是所有的A是B 上反对必有一假所有的A都不是B 包容矛盾包容有的A是B 必有一真下反对有A的不是B三段论A→BB→CA→B 有的B是CA→C 有的C是B—B →—A 逆否(A→B的矛盾关系A∧—B)A→B 有的A→B有的B→A—A∨BB→C充分假言:前推后(A推B),肯前肯后,否后否前如果A,那么B;只要A,就B 若A,则B所有A,是B 凡是A,是B 为了A,一定B 为了A,必须B A指的就是B 除非不A,否则B必要假言B推A只有A,才B 没有A,就没有B 不A,不B除非A,否则不B A是B的前提,保障,基础,条件/谁是条件谁在后选言命题P、Q √相容性P∨Q —P、Q √P、—Q √选言—P、—Q ×不相容性P∕Q 要么P要么Q不是P就是QP∨Q的矛盾命题—(P∨Q)→—P ∧—QP∨Q= —P →Q—Q →PP∨Q 排中律排除一个选中一个必须先排—A∨B = A→B (鲁宾逊定律)—A∨B的矛盾命题是A∧—B A→B的矛盾命题是A∧—B模态命题必然P 上反对必有一假必然非P 包容矛盾包容可能P 必有一真下反对可能非P模态命题的具体关系“并非必然P”等值于“可能非P”,即:不必然=可能不;“并非必然非P”等值于“可能P”,即:不必然不=可能;“并非可能P”等值于“必然非P”,即:不可能=必然不;“并非可能非P”等值于“必然P”,即:不可能不=必然;模态命题与非模态命题的推出关系必然P→P →可能P ;必然非P →非P→可能非P。

命题逻辑基本推理公式

命题逻辑基本推理公式

命题逻辑基本推理公式(1) P∧Q⇒P .(2)¬( P→Q)⇒P .(3)¬(P→Q)⇒¬Q.(4) P⇒P ∨Q.(5)¬P⇒P →Q.(6) Q⇒P →Q.(7) ¬P∧(P∨Q) ⇒Q.选言推理否定式(8) P∧(P→Q) ⇒Q. 假言推理肯定前件式(9) ¬Q∧(P→Q) ⇒¬P .假言推理否定后件式(10) (P→Q)∧(Q→R) ⇒P→R. 三段论(11) (P↔ Q)∧(Q↔R) ⇒P↔R. 双条件三段论(12) (P→R)∧(Q→R)∧( P ∨Q) ⇒R. 二难推理(13) (P→Q)∧(R→S) ∧(P ∨R)⇒Q∨S. 二难推理(14) (P→Q)∧(R→S) ∧¬(Q∨¬S)⇒¬P ∨¬R. 破坏二难推理(15) (Q→R) ⇒(( P∨Q)→(P ∨R)) .(16) (Q→R) ⇒(( P→Q)→(P→R)) .使用真值表法证明这些推理公式是容易的。

若从语义上给予直观说明也是不难的. 如公式(2), ¬(P →Q) ⇒P . 公式( 3), ¬(P →Q)⇒Q. 意思是说, 若P →Q 不成立( 取假), 必有 P 为真, 还有 Q 为假. 这从P →Q 的定义可知, 因只有当 P = T 而 Q = F 时, P →Q = F. 又如公式( 7), ¬P ∧(P ∨Q)⇒Q. 意思是说, P 不对, 而P ∨Q 又对, 必然有 Q 对.公式( 8) , P ∧(P →Q) ⇒Q 常称作假言推理, 或称作分离规则, 是最常使用的推理公式。

公式(10) , (P →Q) ∧(Q→R)⇒P →R 常称作三段论。

日常语言运用:(1) 此人既呆又笨为真,则此人笨为真。

(2)(3)并非“犯错蕴涵失败“,即是说,”如果犯错,那么失败“为假命题,则必有犯错且不失败的例子。

逻辑判断推理中常用的逻辑公式00414

逻辑判断推理中常用的逻辑公式00414

逻辑命题与推理必然性推理(演绎推理):对当关系推理、三段论、复合命题推理、关系推理和模态推理可能性推理:归纳推理(枚举归纳、科学归纳)、类比推理命题直言命题的种类:(AEIOae)⑴全称肯定命题:所有S是P(SAP)⑵全称否定命题:所有S不是P(SEP)⑶特称肯定命题:有的S是P(SIP)⑷特称否定命题:有的S不是P(SOP)⑸单称肯定命题:某个S是P(SaP)⑹单称否定命题:某个S不是P(SeP)直言命题间的真假对当关系:矛盾关系、(上)反对关系、(下)反对关系、从属关系矛盾关系:具有矛盾关系的两个命题之间不能同真同假。

主要有三组:SAP与SOP之间。

“所有同学考试都及格了”与“有些同学考试不及格”SEP与SIP之间。

“所有同学考试不及格”与“有些同学考试及格”SaP与SeP之间。

“张三考试及格”与“张三考试不及格”上反对关系:具有上反对关系的两个命题不能同真(必有一假),但是可以同假。

即要么一个是假的,要么都是假的。

存在于SAP与SEP、SAP与SeP、SEP与SaP之间。

下反对关系:具有下反对关系的两个命题不能同假(必有一真),但是可以同真。

即要么一个是真的,要么两个都是真的。

存在于SIP与SOP、SeP与SIP、SaP与SOP之间。

从属关系(可推出关系):存在于SAP与SIP、SEP与SOP、SAP与SaP、SEP与SeP、SaP与SIP、SeP与SOP六种直言命题之间存在的对当关系可以用一个六角图形来表示,“逻辑方阵图”SAP SEPSaP SePSIP SOP直言命题的真假包含关系全同关系、真包含于关系、真包含关系、交叉关系、全异关系复合命题:负命题、联言命题、选言命题、假言命题负命题的一般公式:并非P联言命题公式:p并且q “并且、…和…、既…又…、不但…而且、虽然…但是…”选言命题:相容的选言命题、不相容的选言命题相容的选言命题公式:p或者q“或、或者…或者…、也许…也许…、可能…可能…”【一个相容的选言命题是真的,只有一个选言支是真的即可。

逻辑命题公式计算

逻辑命题公式计算

逻辑命题公式计算本页仅作为文档页封面,使用时可以删除This document is for reference only-rar21year.March题号:第一题题目:电梯模拟1,需求分析:计算命题演算公式的真值所谓命题演算公式是指由逻辑变量(其值为TRUE或FALSE)和逻辑运算符∧(AND)、∨(OR)和┐(NOT)按一定规则所组成的公式(蕴含之类的运算可以用∧、∨和┐来表示)。

公式运算的先后顺序为┐、∧、∨,而括号()可以改变优先次序。

已知一个命题演算公式及各变量的值,要求设计一个程序来计算公式的真值。

要求:(1)利用二叉树来计算公式的真值。

首先利用堆栈将中缀形式的公式变为后缀形式;然后根据后缀形式,从叶结点开始构造相应的二叉树;最后按后序遍历该树,求各子树之值,即每到达一个结点,其子树之值已经计算出来,当到达根结点时,求得的值就是公式之真值。

(2)逻辑变元的标识符不限于单字母,而可以是任意长的字母数字串。

(3)根据用户的要求显示表达式的真值表。

2,设计:2.1 设计思想:<1>,数据结构设计:(1) 线性堆栈1的数据结构定义typedef struct{DataType stack [MaxStackSize];int top; /* 当前栈的表长*/} SeqStack;用线性堆栈主要是用来存储输入的字符,它的作用就是将中缀表达式变成后缀表达式。

(2) 线性堆栈2的数据结构定义typedef struct{BiTreeNode *stack [MaxStackSize];int top; /* 当前栈的表长*/} TreeStack;这个堆栈和上面的堆栈的唯一不同就是它们存储的数据的类型不同,此堆栈存储的是树节点,它的作用是将后缀表达式构成一棵二叉树。

(3)树节点数据结构定义typedef struct Node{DataType data;struct Node *leftChild;struct Node *rightChild;}BiTreeNode;<2>算法设计详细思路如下:首先实现将中缀表达式变成后缀表达式:在将中缀表达式变成后缀表达式的时候会用到堆栈,因此首先需要初始化一个堆栈。

考研逻辑公式

一、命题及其否命题(矛盾命题)1、并非“所有S都就是P” = 有些S不就是P2、并非“所有S都不就是P" = 有些S就是P3、并非“P且Q”= 非P或非P4、并非“P或Q ” = 非P且非Q5、并非“要么P要么Q”=“P且Q”或“非P且非Q”6、并非“如果P,则Q”= P且非Q7、并非“只有P,才Q” = 非P且Q二、充分条件(P,则Q)假言命题1、语言形式(P→Q):“如果P那么Q”“只要P,就Q”“若P必Q”“P,则Q"2、性质:如果充分条件命题“P→Q"为真,则:(1)肯定P必肯定Q(P真,则Q为真)(2)否定P,未必否定Q(P假,则Q不一定假)(3)肯定Q,未必肯定P(Q真,则P不一定真)(4)否定Q,必否定P(Q假,则P为假)3、公式:(1)“如果P,那么Q”= “非P或P”(2)并非(P→Q) = P且非Q三、必要条件(只有P,才Q)假言命题1、语言形式(P←Q):“只有P,才Q"“如果Q,则P”“不P,不Q”“没有P,没有Q”P就是Q得前提(必不可少得条件)2、性质:P←Q为真:(1)有P未必有Q(2)无P必无Q(3)有Q必有P(4)无Q未必有P3、公式(1)“只有P,才Q” = “如果Q,则P”(2)并非“只有P,才Q” = “并非P且Q”四、联言命题1、语言形式:“不仅P,而且Q”,“虽然P,但就是Q"“既P,又Q”“一边P,一边Q”2、性质:一真及真、一假及假3、公式:(1)并非“P且Q" =“非P或非Q”(2)并非“P或Q” = “非P且非Q"五、选言命题1、语言形式:(1)相容:或者P,或者Q,命题为真,至少一个为真(2)不相容:要么P,要么Q,不就是P,就就是Q。

只有一个为真,命题为真2、公式:(1)P或Q = 如果非P,则Q(2)并非“P或Q"=非P且非Q六、三段论(大前提、小前提、结论)1、规则:大前提-—小前提——结论(可以用柏拉图)例题:我就是台湾人,但同时我也就是中国人。

逻辑最基本的公式

逻辑最基本的公式
蕴含是逻辑中最基本的重要概念之一,可以用符号“→”表示。

蕴含的定义是:“如果命题P成立,则命题Q也成立”。

这可以用以下公式表示:
P→Q
其中,P被称为前提,Q被称为结论。

这个公式意味着如果前提P成立,那么结论Q也必定成立。

蕴含有几个重要的特性:
1.反身性:一个命题蕴含它本身。

即,P→P是恒成立的。

2.假言推理:如果有一个蕴含P→Q成立,又知道P成立,那么我们可以推断Q也成立。

这被称为假言推理,也是常见的逻辑推理形式。

3.合成性:如果有两个蕴含P→Q和Q→R成立,那么我们可以推断出P→R也成立。

这被称为合成性,表示多个蕴含的传递性。

此外,逻辑中还有一个重要的公式是“等价”。

等价表示两个命题之间具有相同的真值,可以用符号“↔”表示。

等价的定义是:“如果命题P成立,则命题Q也成立;反之亦然”。

这可以用以下公式表示:P↔Q
等价命题具有以下几个特性:
1.反身性:一个命题等价于它自身。

即,P↔P是恒成立的。

2.传递性:如果有两个等价P↔Q和Q↔R成立,那么我们可以推断出P↔R也成立。

3.双向假设推理:如果有一个等价P↔Q成立,我们可以根据其中一个命题的真值推断另一个命题的真值。

以上是逻辑中最基本的公式,蕴含和等价。

它们是逻辑推理的基础,适用于许多领域,如数学、哲学、计算机科学等。

透彻理解和应用这些公式,有助于我们进行严密的逻辑思考和推理。

逻辑推理公式整理

逻辑推理公式整理逻辑推理是一种基于事实和前提的推导过程,通过推理规则和逻辑公式来得出新的结论。

在逻辑推理中,公式扮演着重要的角色,可以帮助我们理解和描述逻辑关系。

以下是一些常见的逻辑推理公式。

1.求取命题的否定:公式:¬P说明:这个公式表示命题P的否定,即P不成立。

2.条件推理:公式:P→Q说明:这个公式表示如果P成立,则Q也成立。

这是一种常见的逻辑推理形式。

3.充分必要条件:公式:P↔Q说明:这个公式表示P与Q是充分必要条件,即当P成立时Q成立,且当Q成立时P也成立。

4.假言推理:公式:P,Q/P→Q说明:这个公式表示如果同时有P和Q成立,则可以得出P推出Q。

5.排中律:公式:P∨¬P说明:这个公式表示一个命题P或它的否定¬P一定成立。

这是一种基本的逻辑定律。

6.矛盾律:公式:P∧¬P说明:这个公式表示一个命题P与它的否定¬P是矛盾的,不可能同时成立。

7.分配律:公式:P∧(Q∨R)≡(P∧Q)∨(P∧R)说明:这个公式表示逻辑中的分配律,可以帮助我们简化复杂命题的形式。

8.合取范式:公式:(P∨Q)∧(¬P∨Q)∨(P∨¬Q)∧(¬P∨¬Q)说明:这个公式表示合取范式,可以将命题写成一组合取式的多个命题的析取。

9.析取范式:公式:(P∧Q)∨(¬P∧Q)∨(P∧¬Q)∨(¬P∧¬Q)说明:这个公式表示析取范式,可以将命题写成一组析取式的多个命题的合取。

10.假言三段论:公式:P→Q,Q→R/P→R说明:这个公式表示如果P推出Q,且Q推出R,则可以得出P推出R。

这些是一些常见的逻辑推理公式,可以应用于不同的逻辑推理问题中。

逻辑公式的运用能够帮助我们进行准确有效的推理和论证,提高逻辑思维能力。

在实际应用中,还有更多的逻辑推理公式可以用于解决复杂的问题。

3.命题变元与命题公式

命题变元与命题公式
从本节开始,将不再关心命题内容的含义,只 注意命题的真假值,命题的真假值由真值表来 决定,从而在命题与命题联结词上建立一个形 式的系统。
一个特定的命题是一个常值命题,它的真假值只有“T”与 “F”。
对于一个任意的没有赋予具体内容的命题。我们将其称为 命题变元。其定义如下:
以“真”、“假”为其变域的变元称为命题变元,用P、 Q、R等表示,简称为命题。
定义:命题变元的一组确定的值叫做公式的一个指派,每 个指派对应公式的一个确定的值。
定义:所有的指派构成公式的值即组成此公式的一个真值 表。
公式值的确定是按照公式中联结词的出现的先后次序及括 号顺序逐步应用命题联结词的真值表规定而得到的。
构造下面命题公式的真值表:
(P Q) (P Q)
命题公式是一个按照上述法则由命题变元、命题 联结词和圆括号所组成的字符串。(归纳定义)
参看课本P175例子。
Remark:
1 命题公式的括号可以按照上节课内容所讲的方法予以适 当省略。
2 一个命题公式也有真假值,其真假值由其所组成它的命 题的真假惟一确定,从这个角度看,命题公式可以看成是 一个以真假为定义域,以真假为值域的函数。(逻辑函数)
P Q P∧Q
TTT TF F FT F FF F
(P∧Q) P Q
F
FF
T FT
T TF
T TT
P∧ Q F F F T
(P∧Q) → P∧ Q
T F
F
T
3 可以借助一个真值表来确定一个命题公式的真假,此真 值表称为此命题公式的真值表。
设有一个由n个命题变元P1,P2, …,Pn所组成的公式,则此 公式的真假由此n个命题变元所惟一确定:给n个命题变元 (P1,P2, …,Pn)以一组确定的值后(它们由若干个T及F组 成),则能得到相应命题公式的一个确定的值(T或F).
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)转化: 在实现该功能时,首先需要定义各符号的优先级,即:'(' 和
级最高; '!' (逻辑非号)的优先级次之; '&' (逻辑与号)的优先级又低一级, 或号)的优先级跟低; '#' (他不是逻辑符号,只是为了方便使用堆栈而设置)的优先级最 低,接着将 '#' 压入堆栈。在这之后就是正式的转化了, 其过程为:当读到的是逻辑变元时 直接输出,并保存到保存后缀表达式的数组中,当读到的单词为运算符时,令x1为当前栈 顶运算符的变量,x2为当前扫描到的简单中缀表达式的运算符的变量,把当前读入的单词 赋予变量x2,然后比较x1和x2的优先级。若x1的优先级高于x2的优先级,将x1退栈作 为后缀表达式的一个单词输出,然后接着比较新的栈顶运算符x1的优先级与x2的优先级;
到的是双目运算符(与号“ &”或者或号“ I ”)则从栈中弹出两个元素,并对这两个元素进 行相应的运算,然后将这个运算后的值压入堆栈, 这个过程我把它放在Prin t()函数中。
其中第一,二过程的流程图描述分别为:
要求:
(1)利用二叉树来计算公式的真值。首先利用堆栈将中缀形式的公式变为后缀形式; 然后根据后缀形式, 从叶结点开始构造相应的二叉树; 最后按后序遍历该树, 求各子树之值, 即每到达一个结点, 其子树之值已经计算出来, 当到达根结点时, 求得的值就是公式之真值。
(2)逻辑变元的标识符不限于单字母,而可以是任意长的字母数字串。
若x1的优先级低于x2的优先级,将x2的值进栈,然后接着读下一个单词;若x1的优先级
等于x2的优先级且x1为“(”,x2为“)”,将x1退栈,然后接着读下一个单词;若x1的优先级等于x2ห้องสมุดไป่ตู้优先级且x1为“ #”,x2为“#”,算法结束。这个过程我把它放在InToPost()函数中。
然后用后缀表达式构造出二叉树: 在这个过程中,我用到了之前所定义的存放树的堆栈。具体实现为:扫描后缀表达式, 如果遇到逻辑变元然后将这个变元变成一个树节点,它的实现就是将该逻辑变元赋给树的data域,然后将它的左右子树赋为NULL然后将这个树节点压入相应的堆栈;接着继续扫
(3)树节点数据结构定义typedef struct Node{
DataType data;
struct Node *leftChild; struct Node *rightChild; }BiTreeNode;
<2>算法设计详细思路如下:首先实现将中缀表达式变成后缀表达式:在将中缀表达式变成后缀表达式的时候会用到堆栈,因此首先需要初始化一个堆栈。又由于逻辑变元可能是字符也可能是字符串, 所以它又不同于将单字符的逻辑变元的中缀表 达式变成后缀表达式。 我的设计是这样的, 我将中缀表达式变成后缀表达式的过程分成了两 部:化简 (将一维的复杂的中缀表达式变成一维的简单的中缀表达式,并将字符串逻辑变元
(3)根据用户的要求显示表达式的真值表。
2
<1>,数据结构设计 :
(1)线性堆栈1的数据结构定义typedef struct
{
DataType stack [MaxStackSize];
int top;/*当前栈的表长*/
}SeqStack;
用线性堆栈主要是用来存储输入的字符, 它的作用就是将中缀表达式变成后缀 表达式。
(2) 线性堆栈 2 的数据结构定义
typedef struct
{
BiTreeNode *stack [MaxStackSize];
int top;/* 当前栈的表长 */
}TreeStack;这个堆栈和上面的堆栈的唯一不同就是它们存储的数据的类型不同, 储的是树节点,它的作用是将后缀表达式构成一棵二叉树。
存放在二维数组中),转化(将化简后的中缀表达式变成后缀表达式)。
( 1)化简: 先用一个字符数组存放输入的中缀表达式(表达式以‘#'号结束),然后
将一维的中缀表达式中的字符串逻辑变元用一个字符进行标识, 这样我们就可以将原来复杂 的中缀表达式变成熟悉而又简单的中缀表达式,同时用二维数组存放那些字符串逻辑变元。 实现的过程就是首先扫描一维中缀表达式, 如果遇到逻辑符号, 那么记住这个逻辑符号在数 组中的相对位置用一个变量存放, 然后继续扫描中缀表达式直到再次遇到逻辑符号, 记住它在中缀表达式中的相对位置,这两个逻辑符号之间的部分就是一个完整的逻辑变元, 将这个字符串逻辑变元用一个字符代替并将这个字符串逻辑变元保存在二维数组中。 程的实现我把它放在change()函数中。
再一次
这个过
'#'
'('
')'
'|'
的优先
(逻辑
MaketreeO函数中。
最后打印真值表:
打印真值表也用到了前面的简单的后缀表达式,其实现的基本思想为和构造二叉树差 不多,它实现了每到一个根节点就计算一个运算的值。在打印之前需要统计字符的个数,有
m个字符则要打印2^m行,因为他有这么多情况。具体实现为:用一个字符型的数组来存放 每个元素的一次取值, 然后扫描后缀表达式, 如果遇到逻辑变元就通过这个标识将相应的取 值赋给它,然后它压入堆栈;接着继续扫描,如果遇到的是单目运算符(非号“!”)则从 堆栈里面弹出一个元素,并对它进行非运算,然后又将这个运算后的值压入堆栈;如果扫描
描,如果遇到的是单目运算符(非号“!”)也将它构造成一个树节点然后从堆栈里面弹出 一个树形节点,将弹出的元素的作为它的左子树,右子树设置为NULL然后将这个树节点
压入相应的堆栈;如果扫描到的是双目运算符(与号“&”或者或号“ | ”)将它也构造成一
棵树,然后将这个树节点压入相应的堆栈, 然后从栈中弹出两个元素, 一个作为它的左子树, 一个作为它的右子树,如此重复n(n为后缀表达式的长度)次。这个过程我把它放在
题号:第一题
题目:电梯模拟
1
计算命题演算公式的真值
所谓命题演算公式是指由逻辑变量(其值为TRUE或FALSE和逻辑运算符A(AND、
V(OR和「(NOT按一定规则所组成的公式 (蕴含之类的运算可以用A、V和「来表示)。
公式运算的先后顺序为「、A、V,而括号()可以改变优先次序。已知一个命题演算公式 及各变量的值,要求设计一个程序来计算公式的真值。
相关文档
最新文档