如b>a大,c>a,怎么样用程序语言来保存和判断c不一定比b大这样的逻辑关系?

Vdass 2020-03-21 05:06:40
用什么样一种方法来保存和判断b和c的逻辑关系?

比如输入条件是:

b>a,c>a,

假如这样保存

if(b>a)

b=2,a=1;

if(c>a)

c=a+1;

即c=2;

if(b==c) //即b==2,c==2

输出b与c大小不确定.

else

b与c大小确定

输出

但这里有个问题

如果 c>b>a, e>d>a

设a=1那么

b=2,c=3

d=2,e=3

如果按照相等来判断的话

判断方法:

if(c==e)

print("c与e关系不确定")

else

print("c与e关系能确定")



但 这样的话b和e的关系也能确定,因为b!=e,

可实际上b和e的关系不能确定

如果用集合来保存这样的关系的话,那怎么样表示这个集合上限?

输入:b>a,c>a

设置a=100,

b=[101,无穷大]

c=[101,无穷大]

输入增加 d>b 即变为:d>b>a,c>a

给d赋值:

d=[b[0]+1,无穷大]即d=[102,无穷大]

这样判断d是否大于a只需判断d[0]是否大于a[0]即可,就是集合的利用包含关系来判断

如果此时输入

e>c 即变为:d>b>a,e>c>a

给e赋值:

e就应该是[c[0]+1,无穷大]即:[101+1,无穷大] [102,无穷大]

e与d的集合一样,说明e与d不确定

问题来了:

如果增加了一个f>e 即:d>b>a,f>e>c>a

为f赋值就应该是: f=[e[0]+1,无穷大] 即[103,无穷大]

f=[103,无穷大] 而d=[102,无穷大] f[0]>d[0],f比d大! 实际上f与d的关系不确定!这就矛盾了

如果这样改进:

条件 :b>a,c>a

设 a=100,

int x=某个具体的数

b=[101,x]

c=[101,x]

这样保存

如果此时输入:

d>b 即d>b>a,c>a

如果设置 d=[x+1,x*2] 即d的每个数都比b大,

实际上这样也是有问题 的,

某个具体的数x 怎么确定? 随便设置一个?比如10000,但这样还是有bug

这里写不下了..这个bug很容易想到这里就暂时不写了.

那么到底怎么保存这样的一种逻辑关系呢?
...全文
168 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主,你的逻辑有问题:
if(c==e)
print("c与e关系不确定")
else
print("c与e关系能确定")

c==e的时候竟然是关系不能确定?这个逻辑恕我无法看懂。能详细说说么?
真相重于对错 2020-03-21
  • 打赏
  • 举报
回复
据你的描述,要保存逻辑关系,我的建议是不死可以用树?
qybao 2020-03-21
  • 打赏
  • 举报
回复
没明白你的目的,b和c的关系应该是不确定的,所以应该用or关系来描述 即c>=b || c<=b

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧