用C++写一个三人表决器

昨天离散数学老师布置了一道编程题:

设计并编程实现一个3人表决开关电路。设三个裁判分别为A、B、C,有两个及以上裁判同意,则通过表决;否则,未通过表决。同意与否通过键盘输入,可以用0、1或T、F表示。再进一步,如果A是主裁判,有一票否决权。又该如何设计实现呢?

让我们写一个三人表决器,我晚上的时候上交了作业,用类与对象写的

A裁判未拥有一票否决权

#include<bits/stdc++.h>
usingnamespacestd;
classDecide
{
private:
inta,b,c;
public:
Decide(inta=0,intb=0,intc=0);//构造函数初始化不通过
voidShow();//输出结果函数
};
Decide::Decide(inta,intb,intc){
this->a=a;
this->b=b;
this->c=c;
}
voidDecide::Show(){
if(a+b+c>=2)
cout<<"通过表决"<<endl;
else
cout<<"未通过表决"<<endl;
}
intmain()
{
inta,b,c;
cout<<"请输入三个裁判结果"<<endl;
cin>>a>>b>>c;
DecideD(a,b,c);
cout<<"最终结果:"<<endl;
D.Show();
return0;
}

A裁判拥有一票否决权

A裁判拥有一票否决权
#include<bits/stdc++.h>
usingnamespacestd;
classDecide
{
private:
inta,b,c;
public:
Decide(inta=0,intb=0,intc=0);
voidShow();
};
Decide::Decide(inta,intb,intc){
this->a=a;
this->b=b;
this->c=c;
}
voidDecide::Show(){
if(a==1){
if(b+c>=1&&b+c<=3)
cout<<"通过表决"<<endl;
else
cout<<"未通过表决"<<endl;
}
else
cout<<"未通过表决"<<endl;
}
intmain()
{
inta,b,c;
cout<<"请输入三个裁判结果(第一位裁判拥有一票否决权):"<<endl;
cin>>a>>b>>c;
DecideD(a,b,c);
cout<<"最总裁判结果"<<endl;
D.Show();
return0;
}

今天下午老师给我的作业点了一个赞,并且评论了,哈哈哈φ(≧ω≦*)♪
在这里插入图片描述我想了想,确实不严谨,好的程序真的是严谨性特别强,于是我今天对程序进行了改进,严谨性有了很大的提升

A裁判未拥有一票否决权

#include<bits/stdc++.h>
using namespace std;
class Decide
{
private:
    int a,b,c;
public:
    Decide(int a=0,int b=0,int c=0);//构造函数初始化不通过
    void Show();
};
Decide::Decide(int a,int b,int c) {
    this->a=a;
    this->b=b;
    this->c=c;
}
void Decide::Show() {
    if(cin.good()&&a>=0&&b>=0&&c>=0) {//判断输入的数据是否为非负整数
    if(a+b+c<=3&&a+b+c>=0) {
        if(a+b+c>=2)
        cout<<"通过表决"<<endl;
    else
    cout<<"未通过表决"<<endl;
    }
    else
        cout<<"输入错误"<<endl;
    }
    else
        cout<<"输入错误"<<endl;
}
int main()
{
    int a,b,c;
    cout<<"请输入三个裁判结果(输入1或0)"<<endl;
    cin>>a>>b>>c;
    Decide D(a,b,c);
    cout<<"最终结果:"<<endl;
    D.Show();
    return 0;
}

A裁判拥有一票否决权

#include<bits/stdc++.h>
using namespace std;
class Decide
{
private:
    int a,b,c;
public:
    Decide(int a=0,int b=0,int c=0);
    void Show();
};
Decide::Decide(int a,int b,int c) {
    this->a=a;
    this->b=b;
    this->c=c;
}
void Decide::Show() {
        if(cin.good()&&a>=0&&b>=0&&c>=0){//判断输入的数据是否为非负整数
    if(a==1) {
        if(b+c>=1&&b+c<=3)
            cout<<"通过表决"<<endl;
            else if(a+b+c>3&&a+b+c<0)
                cout<<"投票错误"<<endl;
                else
        cout<<"未通过表决"<<endl;
    }
    else if(a==0)
        cout<<"A裁判行使一票否决权,未通过表决"<<endl;
        else
            cout<<"输入错误"<<endl;
    }
    else
        cout<<"输入错误"<<endl;
}
int main()
{
    int a,b,c;
    cout<<"请输入三个裁判结果(第一位裁判拥有一票否决权):"<<endl;
    cin>>a>>b>>c;
    Decide D(a,b,c);
    cout<<"最总裁判结果"<<endl;
    D.Show();
    return 0;
}

其中用到了cin.good()函数来判断输入的数据类型是否跟定义的数据类型一致,之后再经过逐层判断,最后输出结果!大体思想就是这样的。

猜你喜欢

转载自blog.csdn.net/pipihan21/article/details/105082595