我是靠谱客的博主 傻傻大米,最近开发中收集的这篇文章主要介绍离散数学的命题公式 ,真值表 ,主析取范式的c++代码前言一、命题公式 ,真值表 ,主析取范式原理二、使用步骤总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、命题公式 ,真值表 ,主析取范式原理
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

最近老师让我们做离散数学的程序设计;正好做完了,想发在这里记录一下学习成果.


一、命题公式 ,真值表 ,主析取范式原理

(1)否定 ┓ (!) : 当P为真时 ┓P为假, 当P为假时 ,┓P为真。

(2)合取 ∧ (&&): 当且仅当P和Q的真值同为真,命题P∧Q的真值才为真;

否则,P∧Q的真值为假。

(3)析取 ∨ (||): 当且仅当P和Q的真值同为假,命题P∨Q的真值才为假;

否则,P∨Q的真值为真。

(4)蕴涵 → (┓P∨Q): 当且仅当P为真,Q为假时,命题P→Q的真值才为假;

否则,P→Q的真值为真。

(5)等价 ↔ : 当且仅当P,Q的真值不同时,命题P↔Q的真值才为假;

否则,P↔Q的真值为真。

(6)命题公式真值表: 设A是含有n个命题变元的命题公式, 将命题公式A在所

有赋值之下取值的情况汇列成表, 称为命题公式A的真值表。

(7)极小项: 对于给定的命题变元,若由命题变元或其否定组成的合取式满足:

            (1) 每个命题变元或其否定两者之一只出现一次。

            (2) 按字典顺序或按下标从小到大顺序出现。

            则称这样的合取式为所给命题变元产生的极小项

二、使用步骤

1.引入库

代码如下(示例)

#include<iostream>

#include<string>

2.读入数据

代码如下(示例):

#include<iostream>
#include<string>
using namespace std;
struct List
{
    int p;
    int q;
    int r;
    //存储在当前指定的真值指派下命题公式的真值 
    int answer;
}a[8];
int main()
 {
     int p,q;
     cout<<"请输入命题p的真值(0/1),p=";
    cin>>p;
    cout<<endl; 
     cout<<"请输入命题p的真值(0/1),q=";
    cin>>q;
    cout<<endl;
    cout<<"非p="<<(!p )<<endl;
    cout<<"p∧q="<<(p&q)<<endl; 
    cout<<"p∨q="<<(p||q)<<endl; 
    cout<<"p→q="<<(!p||q)<<endl;
    cout<<"p等价q="<<((!p||q)&&(!q||p))<<endl;
    //1.利用三重循环为结构体赋值(真值指拍及) 
    int r,answer,k=0;
    printf("p q r P∧Q∨Rn");
    for(p=0;p<2;p++)
    {
        for(q = 0 ;q<2;q++)
        {
            for(r=0;r<2;r++)
            {
                a[k].p = p;
                a[k].q = q;
                a[k].r = r;
                answer = p && q || r;
                a[k].answer = answer;
                k++;
                printf("%d %d %d    %dn",p,q,r,answer);
                
                
                
            }
        }
        
    }
    
    //2.打印真值表
    
    int z=0;
    printf( "P∧Q∨R的主析取范式为");
    for(k=0;k<8;k++)
    {  if(a[k].answer =1)
        {
          printf("mv%d ",k);
        
        }
    
    
    }
    
    
    
    
    
    //3. 
/*    cout<<"P∧Q∨R的主析取范式为";
    string str = "";
    for(k=0;k<8;k++)
    {
        if(a[k].answer==1)
        {
        str = str + "m" + to_string(k) + "v";    
        }
    }
      str = str.substr(0,str.length()-1);
      cout<< str <<endl; */
/*    int r;
    int answer = p && q || r; //P∧Q∨R  
    p=q=r=0;
    printf("p=0,q=0,r=0, P∧Q∨R %dn",answer);
    p=q=0;
    r=1;
    answer = p&&q||r;
    printf("p=0,q=0,r=1,%dn",answer);
    p=r=0;
    q=1;
    printf("p=0,q=0,r=0,%d%n",answer);
    p=0;
    q=r=1;
    printf("p=0,q=0,r=0,%d%n",answer);
    p=1;
    q=r=0;    
    printf("p=0,q=0,r=0,%d%n",answer);
    p=r=1;
    q=0;    
    printf("p=0,q=0,r=0,%d%n",answer);
    p=q=1;
    r=0;
    answer = p&&q||r;    
    p=q=r=1;    
    printf("p=0,q=0,r=0,%d%n",answer);*/
     return 0; 
     
 }


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容 。

最后

以上就是傻傻大米为你收集整理的离散数学的命题公式 ,真值表 ,主析取范式的c++代码前言一、命题公式 ,真值表 ,主析取范式原理二、使用步骤总结的全部内容,希望文章能够帮你解决离散数学的命题公式 ,真值表 ,主析取范式的c++代码前言一、命题公式 ,真值表 ,主析取范式原理二、使用步骤总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部