实验三.docx
《实验三.docx》由会员分享,可在线阅读,更多相关《实验三.docx(9页珍藏版)》请在冰点文库上搜索。
![实验三.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/ebd846b8-89ed-493d-9ebd-51b8349c58e8/ebd846b8-89ed-493d-9ebd-51b8349c58e81.gif)
实验三
离散数学实验报告
实验成绩:
1.【实验序号】
实验三
2.【实验目的】
加深对五个基本联结词(否定、合取、析取、条件、双条件)的理解、掌握利用基本等价公式化简公式的方法。
3.【实验内容】
用化简命题逻辑公式的方法设计一个表决开关电路
4.【实验要求】
①某公司董事会由5个董事组成,公司要对某项决策进行投票表决,只要半数(3位董事)以上都同意(用1表示同意,用0表示不同意)决策通过,否则不通过。
试写出5位董事表决的命题公式(提示:
列出表决开关电路真值表,从真值表得出5人表决开关电路的主合取公式(或主析取公式),将公式化简成尽可能含五个基本联结词最少的等价公式)。
②上面公式中的每一个联结词是一个开关元件,将它们定义成C语言中的函数。
③输入5人表决值(同意为1,不同意为0),调用上面定义的函数,将5人表决开关电路真值表的等价公式写成一个函数表达式。
④输出函数表达式的结果,如果是1,则表明表决通过,否则表决不通过。
5.【算法描述】
通过以下界面提示实现相应逻辑运算,给出具体逻辑值
****************************************************************
请输入5位董事(分别用A、B、C、D、E表示)的表决值(1或0):
A董事表决值(1或0):
B董事表决值(1或0):
C董事表决值(1或0):
D董事表决值(1或0):
E董事表决值(1或0):
出结果/继续/结束(y/c/exit):
****************************************************************
6.【源程序(带注释)】
#include
#include
#include
usingnamespacestd;
intmain()
{
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)//利用while语句执行判断
{
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.【实验结果与分析总结(含运行结果截图)】
显示相关的要求
当输入错误时会显示出来
当五个输入都录入后进行选择