综合实验5 值班安排

发布 2023-04-25 15:49:28 阅读 8892

“程序设计ii”综合编程实验报告

2009-2010学年第一学期)

实验项目名称综合实验5—值班安排。

学生姓名专业班级: 学号:

实验成绩。医院有a、b、c、d、e、f、g 7位大夫,在一星期内(星期一至星期天)每人要轮流值班一天,如果已知:

1) a大夫比c大夫晚1天值班;

2) d大夫比e大夫晚1天值班;

3) e大夫比b大夫早2天值班。

4) b大夫比g大夫早4天值班;

5) f大夫比b大夫晚1天值班;

6) f大夫比c大夫早1天值班;

7) f大夫星期四值班。

就可以确定周一至周日的值班人员分别为:e、d、b、f、c、a、g。

输入要求:先输入一个整数n,再输入n组条件,要求根据输入的条件能够确定唯一的值班表,且输入的n组条件中能够直接或间接得到任意两位大夫的关联关系,例如上面的条件(2)直接显示了d与e间的关系,而通过条件(1)、(6)、(5)可以间接得到a与b的关系。

条件输入格式有2种:

格式1:编号比较运算符编号天数。

其中比较运算符有2种: >或 < 分别表示“早”或“晚”

例如:a格式2:编号 = 数值。

例如:f=4 表示: f大夫在星期四值班。

输出要求:根据输入信息,输出每位大夫在星期几值班。

1、程序的功能要求。

将输入数据储存起来。

输入数据:n组数据,有两种输入格式,要正确合理地处理。

输出数据:输出各位医生的值班时间。

2、程序的性能要求。

没有明确要求。

3、程序的使用方式和环境。

windows下字符界面。

4、程序的错误处理。

仔细核对自己的思路与程序,逐步分析并进行调试。

1、解题思路。

1)可以定义一个二维数组用于保存条件数据,定义两个一维数组,分别用来保存结果(a[14])和已确定的星期数(b[7])。

2)保存结果的一维数组初始化。

3)再将条件输入,将输入数据置于二维数组中。

4)用二重循环,对输入的条件进行判断,并将安排好医生的日期存入一维数组b[7]中。

5)逐一将结果保存在一维数组a[14]中。

6)判断是否每个医生都已被安排值班,并输出值班结果。

2、数据结构描述。

可以定义一个二维数组保存输入条件,由于不知道条件个数,所以将它空间定义大点,又考虑到输入的条件中字符不超过4个,因此设为s[80][5]。定义一个保存结果的一位数组,由于考虑到若所有条件都是格式1,因此设为a[14]。

3、程序框架结构。

先定义3个数组,再对所有条件进行判断,将此题分为两类,一类是有格式2的,另一类全为格式1。在这两类里,都用二重循环实现逐个比较并储存结果。

4、关键算法描述。

1)有格式2的算法:

*对已知值班的医生存入结果*/

for(i=0;i if(s[i][1]==

*通过已知的结果,推导未知的*/

while(count!=7)

*输出所有结果*/

for(i=1;i<=7;i++)

printf("%c医生周%d值班",a[i],i);

2)只有格式1的算法:

*将二维数组中第一行的第一个字符默认为a[0]的内容*/

a[7]=s[0][0];

b[j]=7;

j++;count=1;

*根据已知推导未知*/

while(count!=7)

*转换一位数组a的下标数,使之成为值班的星期数并输出*/

for(i=0;i<14;i++)

if(a[i]!=null)

break;

for(j=i;a[j]!=null;j++)

printf("%c医生周%d值班",a[j],j-i+1);

测试用例1:

输入:7ade>b2

b>g4

ff>c1

f=4输出:e医生周1值班。

d医生周2值班。

b医生周3值班。

f医生周4值班。

c医生周5值班。

a医生周6值班。

g医生周7值班。

测试用例2:

输入:6ac>f1

dgeb>c1

输出:b医生周1值班。

c医生周2值班。

f医生周3值班。

a医生周4值班。

e医生周5值班。

g医生周6值班。

d医生周7值班。

#include<>

#include<>

int main(void)

char s[80][5],a[14];

int n,i,count=0,flag=0,b[7],j=0,k,t;

scanf("%d",&n);

for(i=0;i scanf("%s",s[i]);

for(i=0;i<14;i++)

a[i]=null;

for(i=0;i if(s[i][1]==

if(flag==1)

for(i=1;i<=7;i++)

printf("%c医生周%d值班",a[i],i);

if(flag==0){

a[7]=s[0][0];

b[j]=7;

j++;count=1;

while(count!=7){

for(k=0;kfor(i=0;iif(s[i][0]==a[b[k]])

if(s[i][1]==

t=-(s[i][3]-'0');

elset=s[i][3]-'0';

a[b[k]-t]=s[i][2];

b[j]=b[k]-t;

j++;s[i][0]='0';

count++;

if(s[i][0]!=0'&&s[i][2]==a[b[k]])

if(s[i][1]==

t=s[i][3]-'0';

elset=-(s[i][3]-'0');

a[b[k]-t]=s[i][0];

b[j]=b[k]-t;

j++;s[i][0]='0';

决赛实验室值班安排

第五届测量技能大赛赛前训练。关于测量仪器临时借用的说明。第五届测量大赛即将举办,为了使参赛同学在比赛中有更出色的发挥,现测量实验室制定测量仪器临时借用规定,有效期11月4 11月8日。备注 此项说明针对的是参加测量比赛的人员,对于成功申请测量实验室开放实验的同学依旧按照 工程测量实验室开设实验通知 ...

综合实验安排

关于电子综合设计综合实验的说明。1 过程安排 最后的综合实验从第13周开始,第11周时教师讲述各个题目,学生分组并选定具体的题目第15周结束。第16周交实验报告 电子版 初稿和答辩的ppt初稿,由教师认可后方可参加验收和答辩。第16周为最终验收和答辩。由验收为实物的演示。答辩要求做ppt,并回答教师...

综合科实验安排

过程化检查综合科抽测活动安排。一 1 5月6日下午,开放实验室,一楼实验室供五年级使用,二楼实验室供四年级使用。教师完成所有实验的器材准备 实验过程 实验结果 实验记录等的整理 安排好各班级实验顺序 安排好复习品社 科学的上班教师 完成学生的抽测实验常规训练 2 5月7日 上午 按1班 2班 3班 ...