離散數學 真值表 C 實現

2021-10-11 10:10:54 字數 3492 閱讀 1048

這個網上文章怪多的,就不贅述了。

:been_you1997

csdn:寶寶丶0807

已對**進行盡可能的注釋,希望對你有幫助

因為本人才疏學淺,若有錯誤及不足之處,歡迎指正

#include

#include

using

namespace std;

class

truevaluetable

;// 輸入的字元的備份

char str2[40]

=;// 字尾表示式

char strofstack[40]

=;// 棧陣列

char proposition[10]

=;// 命題元素

int sizeofstr =0;

int sizeofstr2 =0;

int sizeofstack =0;

int sizeofproposition =0;

int priority =5;

// 棧頂元素的優先值

bool trueo***lse[10]

=;// 命題元素的真假值

public

:// 輸入字串,並製作備份

truevaluetable

(const string& strin)

getproposition()

;}// 獲取命題元素

void

getproposition()

}}// 將中綴表示式轉換為字尾表示式

void

infixtranssuffix()

else

stackpush

(str[i++])

; priority =

getpriority()

;break

;case

'*':

stackpush

(str[i++])

; priority =

getpriority()

;break

;case

'+':

if(priority <2)

while

(stacktop()

!='('

&&stacktop()

) str2[sizeofstr2++]=

stackpop()

;else

stackpush

(str[i++])

; priority =

getpriority()

;break

;case

'-':

if(priority <3)

while

(stacktop()

!='('

&&stacktop()

) str2[sizeofstr2++]=

stackpop()

;else

stackpush

(str[i++])

; priority =

getpriority()

;break

;case

'=':

if(priority <4)

while

(stacktop()

!='('

&&stacktop()

) str2[sizeofstr2++]=

stackpop()

;else

stackpush

(str[i++])

; priority =

getpriority()

;break

;case

'(':

stackpush

(str[i++])

; priority =

getpriority()

;break

;case

')':

while

(stacktop()

!='('

&&stacktop()

) str2[sizeofstr2++]=

stackpop()

;stackpop()

;if(stacktop()

=='!'

) str2[sizeofstr2++]=

stackpop()

; i++

; priority =

getpriority()

;break

;default

: i++

;break;}

while

(stacktop()

) str2[sizeofstr2++]=

stackpop()

;return;}

// 輸出真值表

void

outputtruevaluetable()

}// 將計算得到的真值輸出

cout <<

'\t'

<<

(stackpop()

==0?"false"

:"true"

)<< endl;

// 使命題元素的真值組合規律的發生變化

// 類似於二進位制的自加運算

changevalueofproposition()

;}}// 確定棧頂元素的優先值

intgetpriority()

else

switch

(strofstack[sizeofstack -1]

)}// 棧壓入資料

void

stackpush

(const

char

& charin)

// 棧彈出資料

char

stackpop()

// 返回棧頂元素

char

stacktop()

// 獲取命題的值

bool

getvalueofproposition

(const

char

& proposi)

// 讓命題的值按規律改變

void

changevalueofproposition()

else

}// 對棧頂元素進行非運算

void

non(

)// 對棧頂兩元素進行與運算

void

and(

)// 對棧頂兩元素進行或運算

voidor(

)// 對棧頂兩元素進行條件運算

void

condition()

// 對棧頂兩元素進行雙條件運算

void

dcondition()

};// 主函式

intmain()

離散數學中的命題表示式計算並生成真值表

雖然很簡單吧,但是畢竟算是除了刷題外第乙個自己寫出來的有一點用的 所以還是打算水一篇部落格 主要思路就是把式子轉化成字尾表示式,然後再用字尾表示式求值的方法來計算,其中每個命題變元的情況是用沒有剪枝的深搜列舉出來的 下面是 ps 第一版 的條件語句計算出了點問題,已經改了,順便加了個多組輸入 inc...

離散數學中的命題表示式計算並生成真值表

雖然很簡單吧,但是畢竟算是除了刷題外第乙個自己寫出來的有一點用的 所以還是打算水一篇部落格 主要思路就是把式子轉化成字尾表示式,然後再用字尾表示式求值的方法來計算,其中每個命題變元的情況是用沒有剪枝的深搜列舉出來的 下面是 ps 第一版 的條件語句計算出了點問題,已經改了,順便加了個多組輸入 inc...

C語言 命題公式真值表

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