命題邏輯之真值表

2021-08-17 21:12:33 字數 2483 閱讀 9466

①c語言版

亮點:1.qsort(b, j, sizeof(char), cmp);

c語言標準庫函式

2.while(處理括號 || 處理否定 || 處理合取 ... );

可以消除運算子優先順序的問題,但是還是解決不了同級運算子的先後問題。

如:p+q*r會變成p+(q*r)

3.模擬輾轉相除法給變元賦值

**簡單明瞭,但是效率比不上位運算

#include "string.h"

#include "stdio.h"

#include "ctype.h"

#include "stdlib.h"

int cmp(const void* a, const void* b)

int getalpha(char a,char b)

} }qsort(b,j,sizeof(char),cmp); //改進2:用快排代替氣泡排序,提高效率

/* for(i=0; ib[k+1])

}} */

b[j]='\0';

return j;

}void fillvalue(char a,char varchar,int nvar,

char valchar,char resultchar)

//真值表各行

for(j=0; j=0; j--)

else //1+0=1 不變

}else if(charval[j]=='0')

//0+0結束

else}}

*/} for (i=0; i執行結果展示:

②c++11版

亮點:1.使用map容器儲存變元—>0/1的對映

2.合理使用stl中的string::find和replace函式

3.增加判斷了公式是否合法

// !否定,*合取,+析取,-條件,=雙條件

#include #include #include #include #include #include using namespace std;

mapletter; //用紅黑樹結構建立 p/q/r -> 0/1 的對映 //優點:查詢方便且速度快,按字典順序排序

vectorminum;

vectormaxum;

void setletter( int num ) //set p/q/r with 0/1

}bool rps( string& a, string f, string r ) //replace f with r in string a

return false;

}void setstring( string& a ) //replace p/q/r with 0/1 in string

}int getresult( string& tmp ) //get the result true/false

void print( int num, bool ismax, int count ) //print the min_item or max_item }}

int main()

cout << endl << "真值表:" << endl;

for (auto p : letter)

cout << p.first << ' ';

cout << '|' << input << endl;

int count = pow( 2, letter.size() );

for (int i = 0; i < count; ++i) //for i = 0 to 2^letter_number

else

}//print 主合/主析

cout << endl << "主析取正規化:";

if (minum.size() == 1) print( minum[0], false, letter.size() );

else }

cout << endl << endl;

cout << "主合取正規化:";

if (maxum.size() == 1) print( maxum[0], true, letter.size() );

else }

cout << endl << endl;

system( "pause" );

return 0;

}

執行結果:

C語言 命題公式真值表

掌握命題公式真值表的求解,並實現自動求解程式。輸入 任意命題公式 輸出 該命題公式的真值表 要求 輸入任意命題公式,要求用資料儲存命題公式的所有賦值及對應真值,並輸出該公式真值表 此題,難度稍大,對命題公式的表示的方式不一樣,實現過程略有不同,可查詢相關資料。比較長,還需要細心 有什麼意見還請大佬提...

命題邏輯 1

真值 命題可以取乙個值,稱為真值。真值只有 真 和 假 兩種,分別用 1 t 和 0 f 表示。命題 具有確切真值的陳述句。一切沒有判斷內容的句子,都不能作為命題。原子命題 不能再分解為更簡單的命題。復合命題 可以分解為成簡單的命題,與原子命題相對。聯結詞 否定聯結詞 非 合取聯結詞 並且 析取聯結...

10 2 命題邏輯

usr bin env python coding utf 8 命題邏輯 表示對應特定語句連線詞的語言結構部分 布林運算子 連線詞的對應形式 命題符號 命題邏輯的基本表示式import nltk nltk.boolean ops 公式 我們可以建立 命題邏輯的規範公式的無限集合。in 4 nltk....