离散数学实验三用化简命题逻辑公式的方法设计一个表决开关电路.docx
《离散数学实验三用化简命题逻辑公式的方法设计一个表决开关电路.docx》由会员分享,可在线阅读,更多相关《离散数学实验三用化简命题逻辑公式的方法设计一个表决开关电路.docx(8页珍藏版)》请在冰豆网上搜索。
离散数学实验三用化简命题逻辑公式的方法设计一个表决开关电路
离散数学-实验三-用化简命题逻辑公式的方法设计一个表决开关电路
离散数学实验报告
专业班级:
姓名:
学号:
实验成绩:
1.【实验题目】
命题逻辑(3)
2.【实验目的】
加深对五个基本联结词(否定、合取、析取、条件、双条件)的理解、掌握利用基本等价公式化简公式的方法。
3.【实验内容】
用化简命题逻辑公式的方法设计一个表决开关电路。
4.【实验要求】
通过以下界面提示实现相应逻辑运算,给出具体逻辑值
****************************************************************
请输入5位董事(分别用A、B、C、D、E表示)的表决值(1或0):
A董事表决值(1或0):
B董事表决值(1或0):
C董事表决值(1或0):
D董事表决值(1或0):
E董事表决值(1或0):
{
chara[100],b[100],c[100],d[100],e[100];//定义5个字符型数组,用来储存ABCDE5个董事的表决值
charf[100];//f数组为接收出结果/继续/结束的字符
voidprint();//声明打****的函数
for(;;)
{
print();
cout<<"\n\t请输入5位董事(分别用A、B、C、D、E表示)的表决值(1或0):
\n\n";
cout<<"\tA董事表决值(1或0):
\n\tB董事表决值(1或0):
\n\tC董事表决值(1或0):
\n\tD董事表决值(1或0):
\n\tE董事表决值(1或0):
";
cout<<"\n\n\t出结果/继续/结束(y/c/exit):
\n";
print();
cout<<"请输入A董事表决值(1或0):
";
cin>>a;
while(strcmp(a,"0")!
=0&&strcmp(a,"1")!
=0)//利用strcmp判断字符串,排除其他错误
{
print();
cout<<"A董事表决值输入有误,请重新输入!
\n";
print();
cout<<"请输入A董事表决值(1或0):
";
cin>>a;
}
print();
cout<<"请输入B董事表决值(1或0):
";
cin>>b;
while(strcmp(b,"0")!
=0&&strcmp(b,"1")!
=0)
{
print();
cout<<"B董事表决值输入有误,请重新输入!
\n";
print();
cout<<"请输入B董事表决值(1或0):
";
cin>>b;
}
print();
cout<<"请输入C董事表决值(1或0):
";
cin>>c;
while(strcmp(c,"0")!
=0&&strcmp(c,"1")!
=0)
{
print();
cout<<"C董事表决值输入有误,请重新输入!
\n";
print();
cout<<"请输入C董事表决值(1或0):
";
cin>>c;
}
print();
cout<<"请输入D董事表决值(1或0):
";
cin>>d;
while(strcmp(d,"0")!
=0&&strcmp(d,"1")!
=0)
{
print();
cout<<"D董事表决值输入有误,请重新输入!
\n";
print();
cout<<"请输入D董事表决值(1或0):
";
cin>>d;
}
print();
cout<<"请输入E董事表决值(1或0):
";
cin>>e;
while(strcmp(e,"0")!
=0&&strcmp(e,"1")!
=0)
{
print();
cout<<"E董事表决值输入有误,请重新输入!
\n";
print();
cout<<"请输入E董事表决值(1或0):
";
cin>>e;
}
print();
cout<<"您输入的董事会表决值为:
\n";
cout<<"\tA董事表决值:
"<"<
"<"<"<print();
for(;;)
{
cout<<"\t出结果/继续/结束(y/c/exit):
";
cin>>f;
if(strcmp(f,"y")==0)
{
if((a[0]+b[0]+c[0]+d[0]+e[0])>242){print();cout<<"表决通过!
\n";print();}//利用ASCII码判断表决值是否大于242(10进制为3)
else
{
print();
cout<<"表决不通过。
\n";
print();
}
}
elseif(strcmp(f,"c")==0)
{
break;
}
elseif(strcmp(f,"exit")==0)
{
exit(0);
}
else
{
print();
cout<<"输入有误,请重新输入!
\n";
print();
}
}
}
system("pause");
return0;
}
voidprint()
{
cout<<"****************************************************************\n";
}
7.【实验结果与分析总结(含运行结果截图)】
主界面:
功能演算:
测试错误:
分析总结:
要善于利用strcmp函数来判断字符串之间是否相等,避免接受进不必要的字符造成程序错误。
把表决值定义为字符型的话,在判断是否表决通过的时候,也应该利用ASCII码来判断(0的ASCII码为48;1的ASCII码为49)。
为了程序美观,可以把打印星号的语句单独写为子函数,这样每次要打印星号的时候,只要调用该子函数即可。
有时候之前输入的数据会对后面的输入造成干扰,这时候可以使用fflush(stdin)来清空输入缓存区,以免对后面数据的输入造成干扰。