#include
#include
#include
#include
#include
#define n 50
void
panduan
(int b[n]
,int f)
;//賦值函式
inttkh
(char sz[n]
,char ccu[n]
,int icu[n]
,int h0)
;//分級運算函式
intfkh
(char sz[n]
,char ccu[n]
,int icu[n]
,int h0)
;//主運算函式
intmain()
if(d ==1)
d =1;
}}printf
("\n該式子中的變數個數為:%d\n"
, j)
;//輸出變數個數
h0 = j;
printf
("\n輸出真值表如下:\n \n");
//輸出真值表表頭
for(i1 =
0; i1 < h0; i1++
)printf
(" %c "
, ccu[i1]);
printf
(" ");
puts
(sz)
;printf
("\n");
for(i1 =
0; i1 < j; i1++
)//先將所有的變數賦值為1。
icu[i1]=1
;for
(i2 =
0; i2 < j; i2++
)//輸出真值表前項
printf
(" %d "
, icu[i2]);
jg =
tkh(sz, ccu, icu, h0)
;//用函式求結果
if(jg ==0)
//結果為0,合取加1
hq[h++
]= bj;
else
//否則,析取加1
xq[x++
]= bj;
printf
(" %d\n"
, jg)
;//輸出運算結果
strcpy
(sz, sz0)
;for
(i1 =
0; i1 <
pow(
2, j)-1
; i1++)if
(hq[0]
==-1)
//不存在合取正規化時
printf
("\n該命題公式不存在主合取正規化。\n");
else}if
(xq[0]
==-1)
printf
("\n該命題公式不存在主析取正規化。\n");
else
}//結束
getch()
;}void
panduan
(int b[n]
,int f)
// 二進位制賦值。
}int
tkh(
char sz[n]
,char ccu[n]
,int icu[n]
,int h0)
//分級運算函式
if(kh ==0)
return
fkh(sz, ccu, icu, h0)
;//如果無括號,直接執行
else
}int
fkh(
char sz[n]
,char ccu[n]
,int icu[n]
,int h0)
//主運算函式
//1 就是sz[0]的值
else
if(sz[i +1]
==-2)
//如果是前運算結果的0,則p1等於0
p1 =0;
if(p1 ==-1
)//如果是數字,直接給p1
p1 = sz[i +1]
; sz[i]
=!p1;
j++; p1 =-1
;for
(i1 = i +
1; i1 < s - j; i1++
) sz[i1]
= sz[i1 +1]
;//將後續式子前移一項
} p1 =-1
; j1 = j;
for(i =
0; i < s - j1 -
2* j2; i++
)// 處理與
if(sz[i]
=='&')if
(sz[i -1]
==-2)
//如果是前運算結果的0,則p1等於0
p1 =0;
if(sz[i +1]
==-2)
p2 =0;
if(p1 ==-1
)//如果是數字,直接給p1
p1 = sz[i -1]
;if(p2 ==-1
) p2 = sz[i +1]
; sz[i -1]
= p1 && p2;
j2++
; p1 =-1
; p2 =-1
;for
(i1 = i; i1 < s - j1 -
2* j2; i1++
)//將後續式子前移兩項
sz[i1]
= sz[i1 +2]
; i = i -1;
}for
(i =
0; i < s - j1 -
2* j2 -
2* j3; i++
)// 處理或。
if(sz[i]
=='|')if
(sz[i -1]
==-2)
//如果是前運算結果的0,則p1等於0
p1 =0;
if(sz[i +1]
==-2)
p2 =0;
if(p1 ==-1
)//如果是數字,直接給p1
p1 = sz[i -1]
;if(p2 ==-1
) p2 = sz[i +1]
; sz[i -1]
= p1 || p2;
j3++
; p1 =-1
; p2 =-1
;for
(i1 = i; i1 < s - j1 -
2* j2 -
2* j3; i1++
)//將後續式子前移兩項
sz[i1]
= sz[i1 +2]
; i--;}
for(i =
0; i < s - j1 -
2* j2 -
2* j3 -
2* j4; i++
)// 處理條件
if(sz[i]
=='^')if
(sz[i -1]
==-2)
//如果是前運算結果的0,則p1等於0
p1 =0;
if(sz[i +1]
==-2)
p2 =0;
if(p1 ==-1
)//如果是數字,直接給p1
p1 = sz[i -1]
;if(p2 ==-1
) p2 = sz[i +1]
; sz[i -1]
=!p1 || p2;
j4++
; p1 =-1
; p2 =-1
;for
(i1 = i; i1 < s - j1 -
2* j2 -
2* j3 -
2* j4; i1++
)//將後續式子前移兩項
sz[i1]
= sz[i1 +2]
; i--;}
for(i =
0; i < s - j1 -
2* j2 -
2* j3 -
2* j4 -
2* j5; i++
)// 處理雙條件
if(sz[i]
=='~')if
(sz[i -1]
==-2)
//如果是前運算結果的0,則p1等於0
p1 =0;
if(sz[i +1]
==-2)
p2 =0;
if(p1 ==-1
)//如果是數字,直接給p1
p1 = sz[i -1]
;if(p2 ==-1
) p2 = sz[i +1]
; sz[i -1]
=(!p1 || p2)&&(
!p2 || p1)
; j5++
; p1 =-1
; p2 =-1
;for
(i1 = i; i1 < s - j1 -
2* j2 -
2* j3 -
2* j4 -
2* j5; i1++
)//將後續式子前移兩項
sz[i1]
= sz[i1 +2]
; i--;}
return sz[0]
;}}
大二(上)離散數學 集合的二元關係
include include using namespace std const int max 100 int num int rnum int r max max int a max max void warshall warshall演算法 for int i 1 i num i 對所有j如...
離散數學 求主正規化
輸入 命題公式的合式公式 輸出 公式的主析取正規化和主析取正規化,輸出形式為 mi mj mi mj 極小項和 符號之間有乙個空格,極大項和 符號之間有乙個空格 主析取正規化和主合取正規化之間用 隔開,前後各有乙個空格。永真式的主合取正規化為 1 永假式的主析取正規化為 0 輸入公式的符號說明 非,...
周總結 大二上
只爭朝夕,不負韶華 本來這一周的週日是到我講課的,所以大部分時間花在了備課上面。但這可難到我了,不敢講太難的,因為怕講著講著就翻車了,也不能講太簡單的,因為這是我第一次講課,總不能讓大家感覺我什麼也沒學。最終我決定講講關於遞迴和動態規劃這方面的知識,雖然這方面我掌握的不太好,但是我感覺在備課和講課的...