在命题逻辑中,五个常用逻辑联结词是最基本的概念,它的计算是后续合式公式值的计算的基础。
目的是将五个常用逻辑联结词的计算过程封装成五个函数,并测试简单的公式求值。以便熟悉五个常用逻辑联结词的基本概念,并编程求值。
#include <stdio.h> //Member funtions and define int negation(const int p); int disjunction(const int p, const int q); int conjunction(const int p, const int q); int biconditional(const int p, const int q); int PropostionalCompute(const int p, const int q ,const char ch); // Negation function int negation(const int p) { return p == 0 ? 1 : 0; } //Conjuciton function int conjunction(const int p, const int q) { return (p != 0 && q != 0) ? 1 : 0; } //Disjunciton function int disjunction(const int p, const int q) { return (p == 0 && q == 0) ? 0 : 1; } //Conditional function int conditional(const int p, const int q) { return (p != 0 && q == 0) ? 0 : 1; } //Biconditional function int biconditional(const int p, const int q) { return ((p == 0 && q == 0) || (p != 0 && q != 0)) ? 1 : 0; } // PropostionalCompute function: Choice Propostional Connetive , // e.g.: negation, disjuction tec... int PropostionalCompute(const int p, const int q, const char ch) { switch(ch) { case '~': return negation(q); case '+': return disjunction(p, q); case '*': return conjunction(p, q); case '>': return conditional(p, q); case '=': return biconditional(p, q); default: return -1; } } int main (){ int i ,j; // i,j is an integer char k; // k is a char printf("Enter one Mumber: "); scanf("%d", &i); printf("Enter two Mumber: "); scanf("%d", &j); printf("Enter Propostional Connetive: "); scanf("%c",&k); if(k =='\n'){ scanf("%c",&k); } printf ("The Results is %d\n", PropostionalCompute(i,j,k)); return 0; }
关于Discrete Mathematics更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.