一、算法思想

电梯算法与扫描算法类似,但磁头不会每次都移动到柱面尽头,一旦当前方向上没有访问请求但相反方向上有请求时,就改变磁头臂的移动方向继续处理。电梯算法的本质是一个具有方向约束的最短寻道时间优先算法(SSTF算法)。

二、算法具体设计问题

由于本实验是算法的模拟实验,所以磁盘调度算法并不真正地去处理请求,只是依据给定的柱面访问序列依照某一种具体的查找优化算法进行模拟访问。算法需要输出柱面访问顺序和移动柱面的总数。

三、算法代码实现

#include <iostream>
#include <stdlib.h>
#include<algorithm>
#include<math.h>
#define maxnum 100
using namespace std;
int SCAN(int visitlist[maxnum],int list[maxnum],int pos,int direct,int Num)
{sort(visitlist,visitlist+Num);//先对访问柱面进行排序int sum=0,flag=0;for(int i=0;i<Num;i++)//找到当前访问柱面号的位置{if(visitlist[i]>=pos){flag=i;break;}}if(direct==0){//向外访问,是先访问大于pos的第一个位置到最大//之后访问小于pos第一个位置到最小  copy(visitlist+flag,visitlist+Num,list);copy(visitlist,visitlist+flag,list+Num-flag);reverse(list+Num-flag,list+Num);}else{//向外访问,是先访问小于pos的第一个位置到最小//之后访问大于pos第一个位置到最大  copy(visitlist,visitlist+flag,list);copy(visitlist+flag,visitlist+Num,list+flag);reverse(list,list+flag);}for(int i=0;i<Num-1;i++)sum+=abs(list[i]-list[i+1]);return sum;
}
void guide()
{int Num,pos,direct,sum;int visitlist[maxnum];int list[maxnum];cout<<"请输入带访问的柱面数:";cin>>Num;cout<<"请输入移动臂移动方向,1表示由外向里,0表示由里向外:";cin>>direct;cout<<"请依次输入带访问的柱面号:";for(int i = 0; i < Num; i++)cin>>visitlist[i];cout<<"请输入磁头当前刚完成访问的柱面号:";cin>>pos;sum=SCAN(visitlist,list,pos,direct,Num);cout<<"\n待访问柱面号\n";for(int i = 0; i < Num; i++)cout<<visitlist[i]<<" ";cout<<"\n访问序列\n";for(int i = 0; i < Num; i++)cout<<list[i]<<" ";cout<<"\n总移动距离\n"<<sum;
}int main()
{
guide();return 0;
}

四、实验结果

电梯调度算法简单实现(c语言)相关推荐

  1. 操作系统作业调度算法c语言,操作系统课程设计报告电梯调度算法c语言实现.doc...

    操作系统课程设计报告电梯调度算法c语言实现 操作系统课程设计报告电梯调度算法c语言实现 :调度 算法 电梯 课程设计 操作系统 操作系统课程设计报告 模拟操作系统课程设计 写一个简单的操作系统 篇一: ...

  2. c语言 电梯调度,c语言函数如何返回两个值或多个值(结合 小飞 电梯调度算法)...

    正常思维:使用return 语句,但每调用一次函数 return 语句只能返回一个值 .这是C语言语法规则. 该怎么实现一个函数返回两个值或是多个值?,可以采用"间接方法".大概有 ...

  3. 操作系统实验:驱动调度 模拟电梯调度算法 C语言实现

    一:实验内容 模拟电梯调度算法,对磁盘进行移臂和旋转调度. 二.实验题目 (1)."驱动调度"进程和"接收请求"进程能否占有处理器运行,取决于磁盘的结束中断信 ...

  4. 利用普普通通的游戏引擎实现普普通通的电梯调度算法

    注:这是目前WebGL2.0支持的浏览器版本号列表 稀疏 如同在那个慵懒的午后,贴心地给你指出你代码块的错误的主程老大的头发 WebGL2.0这目前稀疏的浏览器支持,着实令人唏嘘,不过我们要说的不是W ...

  5. 电梯调度算法 软工 Pair Project

    软工要求的结对编程,随机分组,然后,我(郭立轩)和六班的闫生辉分在了同一组.之前并不认识,虽然如此,这次结对编程的经历还是相当愉快的,也学到了不少东西. OK,下面进入正文 关于结对编程 如何利用结对 ...

  6. 1.8 小飞的电梯调度算法

    题目:有一栋楼,如今设计一种电梯调度算法:电梯在一楼让大家上电梯,然后依据大家选择要到的楼层算出某一楼层i,电梯在i层停下让全部人下电梯,然后大家爬楼梯达到自己的楼层.请问电梯停在哪一层.能够使得这一 ...

  7. 比赛报名 | 2019AIIA杯电梯调度算法大赛正式启动

    由中国人工智能产业发展联盟主办.百度深度学习平台飞桨(PaddlePaddle)承办的2019AIIA杯人工智能巡回赛-百度赛站(以下简称"大赛")将于7月至10月举行.本届大赛围 ...

  8. JAVA如何实现手机群控_群控电梯调度算法

    Java面试笔试面经.Java技术每天学习一点 1.传统电梯调度算法 1.1先来先服务算法(FCFS) 先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它 ...

  9. 电梯控制算法(1)单电梯场景——简单扫描算法

    坐电梯小技巧   https://blog.csdn.net/nameofcsdn/article/details/106044619 电梯控制算法(1)单电梯场景--简单扫描算法   https:/ ...

最新文章

  1. const constptr 和引用的盲点(未解决)
  2. python主要用途-学习Python的三大主要用途
  3. Linux 命令学习笔记
  4. extjs 计算日期之和_财报分析之利润表的重构(2)——以医药制造行业为例
  5. apache日志记录格式LogFormat参数说明
  6. java连接mysql 5.7数据库_javaJDBC连接mysql(5.7)数据库,一看就懂的详细例子
  7. clock函数,计算程序运行时间
  8. indesign教程,如何转换图形和框架?
  9. Kafka负载均衡、Kafka自定义Partition、Kafk文件存储机制
  10. RUP软件开发生命周期
  11. ISO15693协议RFID读卡器模块HX829的韦根66(WG66)通信协议说明
  12. 大数据可视化实验六、七:大数据可视化工具—Processing(一)(二)
  13. 【前端面试题】前端布局问题
  14. ASO优化|华为关键词覆盖优化技巧
  15. php判断4的倍数,4的倍数特征(4的倍数特征规律怎样找)
  16. vue + web 前端访问后端,跨域问题解决方案
  17. 量化框架backtrader之一文读懂可视化
  18. SAP ABAP 常用事务代码
  19. 数据分析(python系)
  20. 构造和析构函数的调用

热门文章

  1. 微信小程序抓取网页数据
  2. Signoff Criteria --- ocv applied and results
  3. c语言cstdio头文件,cstdio(cstdio头文件有什么用)
  4. Http 的8种方法
  5. Linux 操作系统 CentOS 镜像下载
  6. 视频编码的比特流里包含的信息总结
  7. inflater用法
  8. 计算机网络工程师的自我评价,计算机网络专业简历的自我评价.docx
  9. 浏览器的同源策略是什么,没有同源策略会怎么样?
  10. 为华生物DSPE-PEG-NHS 磷脂-聚乙二醇-琥珀酰亚胺酯科研用化学试剂材料