版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#pragmawarning(disable:4786) #include #include #include #include#pragmawarning(disable:4786) #include #include #include #include #include #include #include basic.husingnamespacevoidInitRequest(); / voidChangeRequest(boolbinit); / 修改请求的到达时间与磁道voidscan(boolbinit); / voiddisplay(); / maprequest; / mult
2、imap/ scanres 调度结typedefmap:iteratortypedefmultimap:value_typevalType; typedef multimap:iterator muliter;typedefmultimap:reverse_iteratortypedefvector:iteratorintgcurrdiscnum; / int intboolbinit= whilescanf(%d,&choose); casereturncase1: 自动生成请求序binittrue; / case2: case2: 动态修改请求序列 case3: 执行调度算binitfal
3、se; / return/ voidint arrtime, discnum; srand(unsignedint)time(0);for(inti=0;iMAXREQUESTNUM;arrtime = i + 1; / 请求到达时间:1-MAXREQUESTNUM discnum(int)(200*rand()/(RAND_MAX1.0)1 request.insert(make_pair(arrtime, discnum);display(); / / voidChangeRequest(boolifprintf(notinityet!n); return ;intarrtime,disc
4、num; mapiter iter;printf(inputwantedscanf(%d,scanf(%d,/ if(iter=request.find(arrtime)!=discnum=iter-printf(thediscnumis%dndiscnum); / while(1) 输入要修改的到达时printf(inputnewarrtime:); scanf(%d,&arrtime); if (arrtime 1)printf(badinput!ttryagain!n); / iter=(request.insert(make_pair(arrtime,discnum).first; w
5、hile1) 输入将要修改的磁道printf(inputnewdiscnum:); scanf(%d,if(discnumprintf(badinput!ttryagain!n); iter-seconddiscnum 修改相应请求的磁道display(); / printf(Thewantedarrtimeisntexit!npleasetryboolgreatercurrdiscnum(pairreturniter.first=returniter.first=boollesscurrdiscnum(pairreturniter.first=/ scanvoidscan(boolifpri
6、ntf(notinityet!n); return ;intcurrtime0; / 当前调度时间为第一个请求到达的时间 int currdiscnum = 100; / 100 gcurrdiscnum = currdiscnum;/ DISC/ 1:向外;0:向内 bool direct = 1;mapiteritfirst; / mapitermuliteritbeg; / muliter itend; muliter iter; mulre_iter itrbeg; mulre_iter itrend; mulre_iter/ pairitfirst=request.begin();
7、itlast = request.end(); while (itfirst != itlast)if(itfirst-firstif(itfirst-firstcurrtime+; 调度时间1 / scanvec scanen.insert(valType(itfirst-second, itfirst-/ request/ 对可调度请求进行调度 itbeg = scanen.begin(); itend = scanen.end();itrbeg=itrend=if(direct=/ gcurrdiscnumiter=find_if(itbeg,itend,greatercurrdiscn
8、um); if (iter != itend)/ pos=scanen.equal_range(iter-/ for(;pos.first!=pos.second;/ currtime+=(int)(pos.first-first-currdiscnum)*/ 修改调度磁道号 currdiscnumpos.first-first; gcurrdiscnum = currdiscnum;/ 放入调度完成的队列 disc.arr_time=pos.first-second; = pos.first-first;/ scanen.erase(iter-direct=elseif(direct=/ e
9、lseif(direct=/ gcurrdiscnum的请求磁道号 re_iter = find_if(itrbeg, itrend, lesscurrdiscnum); if (re_iter != itrend)/ pos=scanen.equal_range(re_iter-/ for(;pos.first!=pos.second;/ currtime+=(int)(currdiscnum-pos.first-first)*/ currdiscnum=pos.first-first; gcurrdiscnum = currdiscnum;/ 放入调度完成的队列 disc.arr_time=pos.first-second; = pos.first-first;scanen.erase(re_iter-direct=if(scanres.size()=/ / voidmapitermapiteritfirst=request.begin(); mapiter itlast = request.end();if(itfirst!=while (itfirst != itlast)printf(请求时间:%dt磁道号:%dnitfirst-first,itfirst-second); return 打印当前请求队列后返discit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年消毒师考试冲刺训练题
- 2026年法院书记员面试仿真题及答案
- 2026年幼儿园心理学理论知识
- 2026年学生权益维护知识
- 2026年保护知识产权创新
- 2026年外语教师招聘考试模拟题
- 2026年不动产登记代理人考试模拟试卷及答案
- 儿科肺炎护理中的心理干预
- 2026年教师资格证笔试宝典
- 在全区深化教育领域腐败整治工作部署会上的讲话
- 个人挂靠公司合同协议
- CJJT153-2010 城镇燃气标志标准
- 26照明拖鞋(教学设计)-青岛版科学五年级下册
- DL-T825-2021电能计量装置安装接线规则
- 借款合同模板电子版
- 小学奥数几何模块-等高模型、等积变形、一半模型
- 心律失常PPT医学课件
- 2023【画室装修】护墙板包工合同范本正规范本(通用版)
- 排水管网清淤疏通方案(技术方案)
- CT维保服务投标方案
- 2023年中日友好医院住院医师规范化培训(超声医学科)招生考试参考题库+答案
评论
0/150
提交评论