- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
综合编程实验报告--值班安排
“程序设计(Ⅱ)”综合编程实验报告
( 2012 - 2013 学年第 2 学期)
实验项目名称: 值班安排
一、实验内容与要求
医院有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种: 或 ,分别表示“早”或“晚”
例如:AC1 表示:A大夫比C大夫晚1天值班
格式2:编号 = 数值
例如:F=4 表示:F大夫在星期四值班
输入输出示例
7
AC1
DE1
EB2
BG4
FB1
FC1
F=4
EDBFCAG
二、系统设计
1、解题思路
通过寻找有等号的条件,确定其医生的位置,然后把这个医生及其位置作为已知的结点,寻找与该医生有关的条件,确定另一位医生的位置,并把该位医生作为结点,继续寻找,以此递归。
2、数据结构描述
可以定义一个二维字符数组保存条件数据,大小为10*20,但从a[1]开始存放,以便与输入数据(位置值)匹配,另外用a[][0]来标记条件,还有定义为全局变量,因为函数里要用到。
3、程序框架结构
定义全局字符数组s[30]来存放排好序的医生的位置。
定义 void func(char node,int ka);
4、关键算法描述
(1)初始化用来存放顺序的数组为0
for(i=0;i=29;i++)//初始化用来存放顺序的数组为0
s[i]=0;
(2)存放测试数据的条件及标记这些条件
for(i=1;i=n;i++)//存放测试数据的条件及标记这些条件
{
a[i][0]=0;
scanf(%s,a[i][1]);
}
(3)寻找条件中有等于号的,确定该位医生的值班时间,并通过该位医生 确定其他与这位医生有关医生的值班时间
for(i=1;i=n;i++)//寻找条件中有等于号的,确定该位医生的值班时间, //并通过该位医生确定其他与这位医生有关医生的值班时间
{
if(a[i][2]===)
{
ka=a[i][3]-0;
s[ka]=a[i][1];
node=a[i][1];
a[i][0]=1;//把已确定时间的条件标记为1,避免再次确定位置(避免重复搜索该条件)
func(node,ka);//调用函数,确定与该医生有关系的医生的值班时间
}
}
(4) 考虑有些条件没有等于号,且还未确定值班时间的医生,通过假设该医生的位置,同时确定与该医生有关的医生值班时间
for(i=1;i=n;i++)//考虑有些条件没有等于号,且还未确定值班时间的医生,通过假设该医生的位置,同时确定与该医生有关的医生值班时间
{
if(a[i][0]==0)//判断是否被标记过
{
node=a[i][1];
s[20]=node;//假设该医生的时间是在20
ka=20;//记录该医生的位置
func(node,ka);//同过函数,确定与该医生有关的医生与该医生的相对位置
}
}
(5) 星期一到星期五是否都有医生值班
for(i=1;i=7;i++)//判断星期一到星期五是否都有医生值班
if(s[i]==0)
{
aa=i;
flag=1;//如果哪一天没人值班,记下那一天的时间并把flag标记为1;
break;
}
(6) 通过假设的位置,填充到数组的相应位置
if(flag==1)//通过假设的位置,填充到数组的相应位置
{
for(i=10;i=29;i++)
if(s[i]!=0)
{
ab=i;
break;
}
for(i=aa;i=7;i++)
{
if(s[i]==0)
s[i]=s[ab-aa+i];
}
您可能关注的文档
- 给子女买申根签证保险的十大好处.pptx
- 给即将毕业的你.ppt
- 结构化学 多原子分子.ppt
- 结构强度复习思考题.ppt
- 给排水、通风施工方案.doc
- 给排水工程专业英语译文.doc
- 给排水应用知识.doc
- 结力力学学习指导书.doc
- 给排水说明书.doc
- 给排水工程师考试_第4章_给水处理.ppt
- 第十一章 电流和电路专题特训二 实物图与电路图的互画 教学设计 2024-2025学年鲁科版物理九年级上册.docx
- 人教版七年级上册信息技术6.3加工音频素材 教学设计.docx
- 5.1自然地理环境的整体性 说课教案 (1).docx
- 4.1 夯实法治基础 教学设计-2023-2024学年统编版九年级道德与法治上册.docx
- 3.1 光的色彩 颜色 电子教案 2023-2024学年苏科版为了八年级上学期.docx
- 小学体育与健康 四年级下册健康教育 教案.docx
- 2024-2025学年初中数学九年级下册北京课改版(2024)教学设计合集.docx
- 2024-2025学年初中科学七年级下册浙教版(2024)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)六年级下册浙摄影版(2013)教学设计合集.docx
- 2024-2025学年小学美术二年级下册人美版(常锐伦、欧京海)教学设计合集.docx
最近下载
- 数系的扩充与复数的概念教学设计.doc VIP
- 结婚函调报告表.docx
- 氢燃料电池用全氟型质子交换膜.pdf VIP
- 人教版数学二年级上册第四单元《表内乘法(一)》单元整体作业设计.docx VIP
- 2.5 跨学科实践:制作隔音房间模型(课件)人教版(2024)物理八年级上册.pptx VIP
- 大学生心理健康教育.pptx VIP
- 高中信息技术 粤教版必修2《信息系统的安全风险防范》(单元教学设计).pdf VIP
- Unit 2 Reading for writing课件 外研版(2024)七年级英语上册.pptx VIP
- 教科版物理八年级上册第六章 质量与密度 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx
- 非自然叙事学_尚必武.pdf
文档评论(0)