怎样用C++实现逻辑表达式转换成真值表的程序

怎样用C++实现逻辑表达式转换成真值表的程序,第1张

(p∧(p->q))->q

p->q等价于(┐p)∨q写成c/c++语言就是(!p)||q

p∧(p->q)等价于p∧((┐p)∨q)写成c/c++就是p&&((!p)||q))

(p∧(p->q))->q等价于(┐(p∧((┐p)∨q)))∨q写成c/c++语言就是(!(p&&((!p)||q))))||q

programe

code:

#include

<iostream>

using

namespace

std

int

main()

{

int

q,p

cout<<"p

q

(p∧(p->q))->q\n"

for(p=0p<=1p++)

for(q=0q<=1q++)

cout<<p<<"

"<<q<<"

"

<<((!(p&&((!p)||q)))||q)<<endl

}

//运行结果

p

q

(p∧(p->q))->q

0

0

1

0

1

1

1

0

1

1

1

1

其实你可以将表达式化简:

┐(p∧((┐p)∨q))∨q

<=>

┐((p∧┐p)∨(p∧q)))∨q

<=>

┐(0∨(p∨q)))∨q

<=>

1

∨((┐(p∨q))∨q)

<=>

1

页表的作用是实现从页号到物理块号的地址映射。以逻辑地址的页号检索页表,得到该页的物理块号;同时将页内地址d直接送入物理地址寄存器的块内地址字段中。这样物理块号和块内地址拼接成了实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。所以物理地址的计算公式为:物理地址=块的大小(即页的大小L)′块号f+页内地址d解本题中,为了描述方便,设页号为p,页内位移为d,则:p=int(2500/1024)=2d=2500mod1024=452假设页号2对应块号1那么物理地址=1024*1+452=1476

函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合。由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的。没有可变的状态,函数就是引用透明(Referentialtransparency)的和没有副作用(NoSideEffect)。IT培训就来为大家介绍介绍。

任何一种函数式语言中,都有map函数与faltMap这两个函数,比如python虽然不是纯函数式语言,也有这两个函数。再比如在jdk1.8之后,也加入了Lambda表达式,自然也支持map函数。

map和faltMap的共同点和区别

1、共同点

都是依赖FuncX(入参,返回值)进行转换(将一个类型依据程序逻辑转换成另一种类型,根据入参和返回值)

都能在转换后直接被subscribe

2、区别

map返回的是结果集,flatmap返回的是包含结果集的Observable(返回结果不同)

map被订阅时每传递一个事件执行一次onNext方法,flatmap多用于多对多,一对多,再被转化为多个时,一般利用from/just进行一一分发,被订阅时将所有数据传递完毕汇总到一个Observable然后一一执行onNext方法(执行顺序不同)>>>>(如单纯用于一对一转换则和map相同)

map只能单一转换,单一只的是只能一对一进行转换,指一个对象可以转化为另一个对象但是不能转换成对象数组(map返回结果集不能直接使用from/just再次进行事件分发,一旦转换成对象数组的话,再处理集合/数组的结果时需要利用for一一遍历取出,而使用RxJava就是为了剔除这样的嵌套结构,使得整体的逻辑性更强。)

flatmap既可以单一转换也可以一对多/多对多转换,flatmap要求返回Observable,因此可以再内部进行from/just的再次事件分发,一一取出单一对象(转换对象的能力不同)

map函数的用法,顾名思义,将一个函数传入map中,然后利用传入的这个函数,将集合中的每个元素处理,并将处理后的结果返回。而flatMap与map唯一不一样的地方就是传入的函数在处理完后返回值必须是List,其实这也不难理解,既然是flatMap,那除了map以外必然还有flat的 *** 作,所以需要返回值是List才能执行flat这一步。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8082801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存