第一范文网 - 专业文章范例文档资料分享平台

利用真值表法求取主析取范式以及主合取范式的实现 - 副本

来源:用户分享 时间:2025/8/8 4:22:28 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

#include \#include \#include \#include \#define N 50

void pd(int b[N],int f);

int H1 (char T1[N], char T2[N], int T3[N], int y); int H2 (char T1[N], char T2[N], int T3[N], int y); int main() {

int i1,i2,d=1,T3[N],kh=0,jg,j=0,y; int w=0,hequ[N],h=0,x=0,xiqu[N]; char T1[N],T2[N],T10[N],s; hequ[0]=-1; xiqu[0]=-1;

printf(\ printf(\ 用!表示否定 ##\\n\ printf(\ 用&表示合取 ##\\n\ printf(\ 用|表示析取 ##\\n\ printf(\ 用^表示条件 ##\\n\ printf(\ 用~表示双条件 ##\\n\ printf(\

printf(\请输入一个合法的命题公式:\\n\ gets(T1);

strcpy(T10,T1);

for(i1=0;i1

if(T1[i1]==')' || T1[i1]=='(') kh++;

if(T1[i1]>='a' && T1[i1]<='z' || T1[i1]>='A' && T1[i1]<='Z') {

for(i2=0;i2

T2[j]=T1[i1]; j++; } d=1; } }

1

printf(\输出真值表如下:\\n \\n\ for(i1=0;i1

printf(\ printf(\ puts(T1); printf(\

for(i1=0;i1

for(i2=0;i2

printf(\ jg=H1(T1,T2,T3,y); if(jg==0)

hequ[h++]=w; else

xiqu[x++]=w;

printf(\ %d\\n\ strcpy(T1,T10);

for(i1=0;i1<(int)pow(2,j)-1;i1++) {

++w;

pd(T3,j-1);

jg=H1(T1,T2,T3,y); if(jg==0)

hequ[h++]=w; else

xiqu[x++]=w; strcpy(T1,T10); for(i2=0;i2

printf(\ printf(\ %d\\n\ }

if(hequ[0]==-1)

printf(\该命题公式不存在主合取范式。\\n\ else {

printf(\主合取范式:\\n\\t\ for(i1=0;i1

if (i1>0)

printf(\

printf(\ } }

if(xiqu[0]==-1)

2

printf(\该命题公式不存在主析取范式。\\n\ else {

printf(\主析取范式:\\n\\t\ for(i1=0;i10) printf(\

printf(\ } }

printf(\ getch(); }

void pd(int b[N],int f) {

int i; i=f;

if(b[f]==0) b[f]=1; else {

b[f]=0; pd(b,--i); } }

int H1 (char T1[N],char T2[N],int T3[N],int y) {

int i,j,h,s,kh=0,wz[N],a; char xs1[N],ckh[N]; s=strlen(T1); for(i=0;i

if(T1[i]=='(' || T1[i]==')') {

wz[kh]=i;

ckh[kh]=T1[i]; kh++; }

if(kh==0)

return H2(T1,T2,T3,y); else {

for(i=0;i

3

break;

for(j=wz[i-1]+1,h=0;j

a=H2(xs1,T2,T3,y); if(a==1)

T1[wz[i-1]]=1; else

T1[wz[i-1]]=-2;

for(j=wz[i-1]+1;j

return H1(T1,T2,T3,y); } }

int H2(char T1[N],char T2[N],int T3[N],int y) {

int i,h=0,j=0,j1=0,j2=0,j3=0,j4=0,j5=0,i1,i2,p1=-1,p2=-1,s; char dt[N]; s=strlen(T1); if(s==1)

if(T1[0]==-2) return 0; else

return 1; else {

for(i=0;i

for(i1=0;i1

for(i1=i+1;i1

4

利用真值表法求取主析取范式以及主合取范式的实现 - 副本.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c909s87jzsw6i8st1cmtx_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top