C++编程:医院有A、B、C、D、E、F、G七位医生(大夫,护士),,每人在一周内要值一次夜班。排班的要求是:

2016-06-24 18:14:26  分类: c++程序设计第三版谭浩强课后答案  参与:
C++编程:医院有A、B、C、D、E、F、G七位医生,每人在一周内要值一次夜班。排班的要求是:
(1)A医生比C医生晚一天值班;
(2)D医生比E医生晚二天值班;
(3)B医生比G医生早三天值班;
(4)F医生的值班日在B和C医生的中间,且是星期四;
 
 请编写程序,输出每位医生的值班日。值班日以Sunday,Monday,Tuesday,Wednesday,Thurday,Friday,Saturday 分别表示星期日到星期六(提示:用枚举变量)

以下是此题的【c++源代码】
#include<iostream>  
using namespace std; 
 
int main() 

    enum weekday{sun,mon,tus,wed,thu,fri,sat};  //声明枚举类型 
    enum weekday day;  //定义枚举变量 
    int a,b,c,d,e,f,g,loop;  //定义整形变量 
    char ch='A';  //定义字符变量 
    f=thu;  //按照题意,F医生是星期四值班
 
    for(a=sun;a<=sat;a++)  //需要逐个检查A医生星期几符合条件
        if(a!=f)           //A医生值班日子不应该与F医生相同
            for(b=sun;b<=sat;b++)  //逐个检查B医生星期几符合条件
                if((a!=b)&&(f>b))  //B医生值班日子不应该与A医生相同,且F在B之后
                    for(c=sun;c<=sat;c++)  //逐个检查C医生星期几符合条件
                       if((c!=a)&&(c!=b)&&(c!=f)&&(a==c+1)&&(f<c))   //C医生值班日子不应该与A,B,F医生相同,且A比C晚一天
                           for(d=sun;d<=sat;d++)  //逐个检查D医生星期几符合条件
                              if((d!=a)&&(d!=b)&&(d!=c)&&(d!=f)&&(c==d+3))  //D医生值班日子不应该与A,B,C,F医生相同,且C与D之后3天
                                  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+2))   //G值班不应该与A,B,C,D,E,F相同,且G与B后2天
                                                   
                                                  //符合以上条件才能执行以下工作 
                                                  for(loop=0;loop<7;loop++) 
                                                  {   cout<<"Doctor"<<char(ch+loop)<<":"; 
                                                      switch(loop+1) 
                                                      { 
                                                      case 1:day=weekday(a);break; 
                                                      case 2:day=weekday(b);break; 
                                                      case 3:day=weekday(c);break; 
                                                      case 4:day=weekday(d);break; 
                                                      case 5:day=weekday(e);break; 
                                                      case 6:day=weekday(f);break; 
                                                      case 7:day=weekday(g);break; 
                                                      } 
                                                       switch(day) 
                                                      { 
                                                      case sun:cout<<"Sunday"<<endl;break; 
                                                      case mon:cout<<"Monday"<<endl;break; 
                                                      case tus:cout<<"Thusday"<<endl;break; 
                                                      case wed:cout<<"Wednesday"<<endl;break; 
                                                      case thu:cout<<"Thurday"<<endl;break; 
                                                      case fri:cout<<"Friday"<<endl;break; 
                                                      case sat:cout<<"Saturday"<<endl;break; 
                                                      } 
                                                  } 
                                 
                                             
 
    return 0; 

来源:c++程序设计第三版谭浩强课后答案

本文链接:http://www.wb98.com/cjia/post/cjia_7.11.html


本站文章搜索:

<< 上一篇下一篇 >>

搜索

Tags列表

赞助商链接