医院内科有A,B,C,D,E,F,G共7位医生(提示:用枚举变量)

医院内科有A,B,C,D,E,F,G共7位医生,每人在一周内要值一次夜班,排班的要求是:
(1)A医生值班日比C医生晚1天;
(2)D医生值班日比E医生晚2天;
(3)B医生值班日比G医生早3天;
(4)F医生值班日在B医生和C医生值班日之间,且在星期四。
请编写程序,输出每位医生的值班日。值班日以Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday分别表示星期日到星期六(提示:用枚举变量)

#include<iostream>  
using namespace std;
enum day { sun, mon, tue, wed, thu, fri, sat };  //声明枚举类型 
int main()
{
   void print(day);
    int a, b, c, d, e, f, g, i;  
    f = thu;  //F医生是星期四
    for (a = sun; a <= sat; a++)  //逐个检查A医生星期几符合条件
    {
        if (a != f)          
            for (b = sun; b <= sat; b++)  //逐个检查B医生星期几符合条件
            {
                if((a != b)&& (b != f)) 
                    for (c = sun; c <= sat; c++)  //逐个检查C医生星期几符合条件
                    {
                        if ((c != a) && (c != b) && (c != f) && (a == (c + 1) % 7) && ((f > b) && (f < c) || (f > c) && (f < b)))   //C医生值班日子不应该与A,B,F医生相同,且A比C晚一天,C在F之后 
                            for (d = sun; d <= sat; d++)  //逐个检查D医生星期几符合条件
                            {
                                if ((d != a) && (d != b) && (d != c) && (d != f))  //D医生值班日子不应该与A,B,C,F医生相同
                                    for (e = sun; e <= sat; e++)  //逐个检查E医生星期几符合条件
                                    {
                                        if ((e != a) && (e != b) && (e != c) && (e != d) && (e != f) && (d == (e + 2))) //E值班不应该与A,B,C,D,E,F相同,且E比D提前2天
                                            for (g = sun; g <= sat; g++)  //逐个检查G医生条件
                                            {
                                                if ((g != a) && (g != b) && (g != c) && (g != d) && (g != e) && (g != f) && (g == (b + 3)))   //G值班不应该与A,B,C,D,E,F相同,且G与B后2天
                                                {
                                                    //符合以上条件才能执行以下工作 
                                                        print(day(a));//强制类型转换传入函数
                                                        print(day(b));
                                                        print(day(c));
                                                        print(day(d));
                                                        print(day(e));
                                                        print(day(f));
                                                        print(day(g));
                                                        
                                                    }
                                                    
                                                }

                                            }
                                    }
                            }
                    }
            }
	return 0;

}
void print(day i)
{
	switch(i)
	{
	case sun:cout << "Sunday" << endl; break;
    case mon:cout << "Monday" << endl; break;
    case tue:cout << "Tuesday" << endl; break;
    case wed:cout << "Wednesday" << endl; break;
    case thu:cout << "Thursday" << endl; break;
    case fri:cout << "Friday" << endl; break;
    case sat:cout << "Saturday" << endl; break;
	}
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xugggg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值