c语言如何自定义运算公式,用C语言编程:输入命题公式的合式公式,求出公式的真值表,并输出该公式的主合取范式和主析取范式...

A-Z + is OR * is AND _ is → # is⊕(圆圈里加个bai+) @ is ⊙

$ is ↑ 命题的"与非" 运算du( "与非门zhi" )

% is ↓ 命题的"或非"运算( "或非门" )

Input the source formula:

A*!S+R

NORMALc: (!A*!B*!R)+(A*!B*!R)+(!A*B*!R)+(A*B*!R)+(!A*!B*R)+(!A*B*R)+(A*B*R)

NORMALd (!A+B+!R)

Error!

Input the source formula:

A#B

Here!

4countTerms

NORMALc: (A*!B)+(!A*B)

NORMALd (A+B)*(!A+!B)

Error!

Input the source formula:

stack stk;

bool isVar(char ch)const;

void addMin(int minterm);

void addMax(int maxterm);

bool compute(int minterm);

void getInversePoland();

int countTerms(int n);

void assign(int minterm);

stack boolStk;

public:

formulaBase();

formulaBase(const formulaBase& rhs);

~formulaBase();

void getSource();

cout<

"Operate again:"<

cin>>sourceFormula;*/

}

void formulaBase::getInversePoland()

{

char temp,temp1;

for(int i=0;sourceFormula[i]!='\0';i++)

stk.pop();

}

else break;

}

stk.push(temp);

break;

case '*':

while (!stk.empty())

//从键盘上任bai意输入一个主析取范式du,输出与之等值的zhi主合取范式。┐∧∨

# include

# include

# include

using namespace std ;

b129071627bf137f62791a249d8972c8.png

扩展资料:

(1)命题变项是命题公式。

(2)如果A是命题公式,则¬A是命题公式。

(3)如果A和B是命题公式,那么(A∧B)、(A∨B)、(A→B)和(A↔B)都是命题公式。

(4)当且仅当有限次地应用(1),(2),(3)所得到的包含命题变项,联结词和圆括号的符号串是命题公式。

命题公式的定义是一个递归定义形式。命题公式本身不是命题,没有真值,只有对其命题变项进行赋值后,它才有真值。

5个联结词运算儿有不同的优先级。当它们同时出现在一个命题公式里时,联结间运算的优先次序为、∧、∨、→、,如果有括号,则括号内的运算优先进行。

参考资料来源:百度百科-命题公式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值