标题:一条很蛋疼的真值表问题…………
只看楼主
xuexueshimei
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2012-3-20
 问题点数:0 回复次数:0 
一条很蛋疼的真值表问题…………
这是我们学校的数理逻辑上机题
原题是
输入公式的符号说明:
! 非,相当于书面符号中的 “ ¬ ”
& 与,相当于书面符号中的 “ ∧ ”
| 或,相当于书面符号中的 “ ∨ ”
- 蕴含联结词,相当于书面符号中的 “ → ”
+ 等价联结词,相当于书面符号中的 “ ↔ ”
( 前括号
) 后括号
输入:命题公式的合式公式
输出:公式的主析取范式和主析取范式,输出形式为:“ mi ∨ mj ; Mi ∧ Mj” ,极小项和 ∨ 符号之间有一个空格,极大项和 ∧ 符号之间有一个空格;主析取范式和主合取范式之间用“ ; ”隔开,“ ; ”前后各有一个空格。 永真式的主合取范式为 1 ,永假式的主析取范式为 0 。
例如:
1、输入:a&b
输出:m3 ; M0∧M1∧M2

意思可以这样理解
  a&b
  a  b  
  0  0  0  M0
  0  1  0  M1
  1  0  0  M2
  1  1  1  m3
所以真值有一个m3
假值有三个 M1,M2,M3
所以输出
m3 ; M0∧M1∧M2
那么

a|b就有
a  b
0  0  0  M0
0  1  1  m1
1  0  1  m2
1  1  1  m3
所以输出
m1∨m2∨m3 ; M0

!a就有
a
0 1 m0
1 0 M1
m0 ; M1

a有
a
0 0 M0
1 1 m1
m1 ; M0

a->b有
a  b  
0  0  1 m0
0  1  1 m1
1  0  0 m2
1  1  1 m3
m0∨m1∨m3 ; M2

a↔b有
a  b  
0  0  1  m0
0  1  0  m1
1  0  0  m2
1  1  1  m3
m0∨m3 ; M1∧M2

这些只是基本的式子
然后还因为有等号还有数个符号间的结合
所以我考虑用队列来做
但是队列部分学的不是太好
所以建了个数组a[i][j]
先输入一个字符串
一个if语句
如果是字母的话就会i值自增1 (j值+1)*2-1
但是这样的话会很麻烦而且空间会很大
然后考虑用栈
先计算最里面一对括号用switch语句判断符号然后用上面的基本句式判断
但是这样我就没办法判断我所求的值是第几个值了
各种纠结
编了二百多行一点用都没有
错误一堆
求帮忙啊
C学的不精好郁闷
搜索更多相关主题的帖子: 逻辑 学校 
2012-03-20 17:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-363761-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.204427 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved