磁盘调度算法代码 2.docx
《磁盘调度算法代码 2.docx》由会员分享,可在线阅读,更多相关《磁盘调度算法代码 2.docx(19页珍藏版)》请在冰豆网上搜索。
磁盘调度算法代码2
磁盘调度算法
一.需求分析
编译程序运用磁盘的四种调度算法实现对磁盘的调度,四种算法分别为先来先服务(FCFS)算法,最短寻道时间优先(SSTF)算法,扫描调度(SCAN)算法,循环扫描(C-SCAN)算法。
二.总体设计及分类简介
磁盘调度中常用的有四种算法,功能分别如下:
1.先来先服务(FCFS)算法。
即先来的请求先被响应。
FCFS策略看起来似乎是相当"公平"的,但是当请求的频率过高的时候FCFS策略的响应时间就会大大延长。
FCFS策略为我们建立起一个随机访问机制的模型,但是假如用这个策略反复响应从里到外的请求,那么将会消耗大量的时间。
为了尽量降低寻道时间,看来我们需要对等待着的请求进行适当的排序,而不是简单的使用FCFS策略。
这个过程就叫做磁盘调度管理。
有时候FCFS也被看作是最简单的磁盘调度算法。
2.最短寻道时间优先(SSTF)算法。
要求访问的磁道,与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。
3.扫描调度(SCAN)算法。
该算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。
例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象,应是其欲访问的磁道,既在当前磁道之外,又是距离最近的。
这样自里向外的访问,直至再无更外的磁道需要访问时,才将磁道换向自外向里移动。
这时,同样也是每次选择这样的进程来调度,也就是要访问的当前位置内距离最近者,这样,磁头又逐步地从外向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿”现像。
4.循环扫描(C-SCAN)算法。
当磁头刚从里向外移动而越过了某一磁道时,恰好又有一进程请求访问此磁道,这时,该里程就必须等待,为了减少这种延迟,CSCAN算法规定磁头单向移动,而本实验过程中我们所设计的是磁头从里向外移动,而从外向里移动时只须改方向而已,本实验未实现。
但本实验已完全能演示循环扫描的全过程。
三.目的
1.熟悉并掌握磁盘管理系统的设计方法,加深对所学各种磁盘调度算法及其算法的特点的了解。
2.掌握磁盘调度的基本概念,比较各种磁盘调度算法的优劣
四.要求
从课程设计的目的出发,通过设计工作的各个环节,达到以下设计要求:
1.对系统进行功能模块分析、控制模块分析正确;
2.系统设计要实用;
3.编程简练,可用,功能全面,具有较好的健壮性;
4.说明书、流程图要清楚。
五.详细设计及算法流程图
1.总流程图
2.先来先服务(FCFS)算法流程图
3.最短寻道时间优先(SSTF)算法流程图
4.扫描调度(SCAN)算法流程图
5.循环扫描(C-SCAN)算法流程图
附录:
修改后的程序:
#include
usingnamespacestd;
voidFCFS(inta[],intn);
voidSSTF(inta[],intn);
voidSCAN(inta[],intn);
voidCSCAN(inta[],intn);
intmain()
{
intn;//磁道的个数
ints;//功能号
cout<<"请输入当前磁道的个数:
"<cin>>n;int*a=newint[n];cout<<"输入磁道号为:";for(inti=0;i{cin>>a[i];cout<}cout<while(1){cout<cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━┓"<cout<<"┃ 磁盘调度算法功能列表 ┃"<cout<<"┠───────────────────────┨"<cout<<"┃1、先来先服务算法(FCFS)┃"<cout<<"┠───────────────────────┨"<cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cin>>n;
int*a=newint[n];
cout<<"输入磁道号为:
";
for(inti=0;i{cin>>a[i];cout<}cout<while(1){cout<cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━┓"<cout<<"┃ 磁盘调度算法功能列表 ┃"<cout<<"┠───────────────────────┨"<cout<<"┃1、先来先服务算法(FCFS)┃"<cout<<"┠───────────────────────┨"<cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cin>>a[i];
cout<}cout<while(1){cout<cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━┓"<cout<<"┃ 磁盘调度算法功能列表 ┃"<cout<<"┠───────────────────────┨"<cout<<"┃1、先来先服务算法(FCFS)┃"<cout<<"┠───────────────────────┨"<cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
}
cout<while(1){cout<cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━┓"<cout<<"┃ 磁盘调度算法功能列表 ┃"<cout<<"┠───────────────────────┨"<cout<<"┃1、先来先服务算法(FCFS)┃"<cout<<"┠───────────────────────┨"<cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
while
(1)
{cout<cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━┓"<cout<<"┃ 磁盘调度算法功能列表 ┃"<cout<<"┠───────────────────────┨"<cout<<"┃1、先来先服务算法(FCFS)┃"<cout<<"┠───────────────────────┨"<cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━┓"<cout<<"┃ 磁盘调度算法功能列表 ┃"<cout<<"┠───────────────────────┨"<cout<<"┃1、先来先服务算法(FCFS)┃"<cout<<"┠───────────────────────┨"<cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┃ 磁盘调度算法功能列表 ┃"<cout<<"┠───────────────────────┨"<cout<<"┃1、先来先服务算法(FCFS)┃"<cout<<"┠───────────────────────┨"<cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┠───────────────────────┨"<cout<<"┃1、先来先服务算法(FCFS)┃"<cout<<"┠───────────────────────┨"<cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┃1、先来先服务算法(FCFS)┃"<cout<<"┠───────────────────────┨"<cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┠───────────────────────┨"<cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┃2、最短寻道时间算法(SSTF)┃"<cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┠───────────────────────┨"<cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┃3、扫描算法(SCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┠───────────────────────┨"<cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┃4、循环扫描算法(CSCAN)┃"<cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┠───────────────────────┨"<cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┃0、退出┃"<cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━┛"<cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<cout<<"请选择所需功能的前置编号:";cin>>s;if(s>4){cout<<"数据输入有误!请重新输入:"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"请选择所需功能的前置编号:
cin>>s;
if(s>4)
cout<<"数据输入有误!
请重新输入:
"<}else{switch(s){case0:exit(0);break;case1:FCFS(a,n);break;case2:SSTF(a,n);break;case3:SCAN(a,n);break;case4:CSCAN(a,n);break;}}}return0;}//先来先服务调度算法(FCFS)voidFCFS(inta[],intn){intj,i,first=0,now;floatsum=0,m;cout<<"请输入当前磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
else
switch(s)
{case0:
exit(0);break;
case1:
FCFS(a,n);break;
case2:
SSTF(a,n);break;
case3:
SCAN(a,n);break;
case4:
CSCAN(a,n);break;
return0;
//先来先服务调度算法(FCFS)
voidFCFS(inta[],intn)
intj,i,first=0,now;
floatsum=0,m;
cout<<"请输入当前磁道号:
cin>>now;//确定当前磁头所在位置
cout<<"磁盘调度顺序为:
"<for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(i=0;i{cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<}//计算sumfor(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
//计算sum
for(i=0,j=1;j{first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离}sum+=first+abs(now-a[0]);cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离
sum+=first+abs(now-a[0]);
cout<cout<<"移动的总磁道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"移动的总磁道数为:
"<m=sum/n;cout<<"平均寻道长度为:"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
m=sum/n;
cout<<"平均寻道长度为:
"<}//最短寻道时间算法(SSTF)voidSSTF(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;//将磁道号按递增排序for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
//最短寻道时间算法(SSTF)
voidSSTF(inta[],intn)
inttemp;
intk=1;
intnow,l,r;
inti,j;
floatm,sum=0;
//将磁道号按递增排序
for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道显示为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
if(a[i]>a[j])
temp=a[i];
a[i]=a[j];
a[j]=temp;
cout<<"按递增顺序排好的磁道显示为:
"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁头所在位置cout<<"磁盘调度顺序为:"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"请输入当前的磁道号:
"<if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
if(a[n-1]<=now)//当前磁头位置大于最外围欲访问磁道
for(i=n-1;i>=0;i--)
cout<sum=now-a[0];}elseif(a[0]>=now)//当前磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
sum=now-a[0];
if(a[0]>=now)//当前磁头位置小于最里欲访问磁道
for(i=0;icout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<sum=a[n-1]-now;}else{while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
sum=a[n-1]-now;
while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
k++;
l=k-1;//在磁头位置的前一个欲访问磁道
r=k;//磁头欲访问磁道
while((l>=0)&&(r{if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道{cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
if((now-a[l])<=(a[r]-now))//选择离磁头近的磁道
cout<sum+=now-a[l];now=a[l];l=l-1;}else{cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
sum+=now-a[l];
now=a[l];
l=l-1;
cout<sum+=a[r]-now;now=a[r];r=r+1;}}if(l=-1)//磁头位置里侧的磁道已访问完{for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
sum+=a[r]-now;
now=a[r];
r=r+1;
if(l=-1)//磁头位置里侧的磁道已访问完
for(j=r;j{cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<}sum+=a[n-1]-a[0];}if(r==n)//磁头位置外侧的磁道已访问完{for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道{cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
sum+=a[n-1]-a[0];
if(r==n)//磁头位置外侧的磁道已访问完
for(j=k-1;j>-1;j--)//访问磁头位置里侧的磁道
cout<}sum+=a[n-1]-a[0];}}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"移动的总道数为:
"<m=sum/n;cout<<"平均寻道长度为:"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
"<}//扫描算法(SCAN)voidSCAN(inta[],intn){inttemp;intk=1;intnow,l,r;inti,j;floatm,sum=0;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
//扫描算法(SCAN)
voidSCAN(inta[],intn)
for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"按递增顺序排好的磁道为:
"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<cout<<"请输入当前的磁道号:";cin>>now;//以下算法确定磁道访问顺序if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=n-1;i>=0;i--)cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cin>>now;
//以下算法确定磁道访问顺序
if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道
cout<sum=now-a[0];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
if(a[0]>=now)//磁头位置小于最里欲访问磁道
for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
else//磁头位置在最里侧磁道与最外侧磁道之间
{intd;
while(a[k]{//确定当前磁道在已排的序列中的位置k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==0)//磁头向内{for(j=l;j>=0;j--){cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
{//确定当前磁道在已排的序列中的位置
cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):
cin>>d;//确定磁头访问的方向
if(d==0||d==1)
if(d==0)//磁头向内
for(j=l;j>=0;j--)
cout<}for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(j=r;j{cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<}sum=now-2*a[0]+a[n-1];}if(d==1)//磁头向外{for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
sum=now-2*a[0]+a[n-1];
if(d==1)//磁头向外
for(j=r;j{cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<}for(j=l;j>=0;j--){cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<}sum=2*a[n-1]-now-a[0];}}elsecout<<"请输入0或1!"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
sum=2*a[n-1]-now-a[0];
cout<<"请输入0或1!
"<}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<<"移动的总道数为:
"<m=sum/n;cout<<"平均寻道长度为:"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
"<}//循环扫描算法(CSCAN)voidCSCAN(inta[],intn){inttemp;intnow,l,r;inti,j;floatm,sum=0;intk=1;for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
//循环扫描算法(CSCAN)
voidCSCAN(inta[],intn)
for(i=0;ifor(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(j=i+1;j{if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}cout<<"按递增顺序排好的磁道为:"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
"<for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(i=0;i{cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<}cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<cout<<"请输入当前的磁道号:";cin>>now;//确定当前磁道号if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道{for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cin>>now;//确定当前磁道号
for(i=0;icout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<sum=now-2*a[0]+a[n-1];}elseif(a[0]>=now)//磁头位置小于最里欲访问磁道{for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(i=0;icout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<sum=a[n-1]-now;}else//磁头位置在最里侧磁道与最外侧磁道之间{intd;while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
while(a[k]{k++;}l=k-1;//在磁头位置的前一个欲访问磁道r=k;//磁头欲访问磁道cout<<"请输入当前磁头移动的方向(0表示向内,1表示向外):";cin>>d;//确定磁头访问的方向cout<<"磁盘调度顺序为:";if(d==0||d==1){if(d==1)//磁头向外侧访问{for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
if(d==1)//磁头向外侧访问
for(j=r;j{cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<}for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(j=0;j{cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
cout<}sum=2*a[n-1]-now-2*a[0]+a[l];}if(d==0)//磁头向内侧访问{for(j=r-1;j>=0;j--){cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
sum=2*a[n-1]-now-2*a[0]+a[l];
if(d==0)//磁头向内侧访问
for(j=r-1;j>=0;j--)
cout<}for(j=n-1;j>=r;j--){cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
for(j=n-1;j>=r;j--)
cout<}sum=2*a[n-1]-2*a[0]+now-a[r];}}elsecout<<"请输入0或1!";}cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
sum=2*a[n-1]-2*a[0]+now-a[r];
cout<<"请输入0或1!
cout<cout<<"移动的总道数为:"<m=sum/n;cout<<"平均寻道长度为:"<}
"<m=sum/n;cout<<"平均寻道长度为:"<}
"<}
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1