📄 elevator_algorithm.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
class Elevator
{
private:
int *zhumian_list,*sorted_list,num,cur_loc;
int sort_ASC();
public:
Elevator();
void input();
void output();
};
Elevator::Elevator()
{
zhumian_list=NULL;
sorted_list=NULL;
num=0;
cur_loc=0;
cout<<"===============电梯调度算法演示================"<<endl;
}
void Elevator::input()
{
cout<<"请输入磁盘请求总数:"<<ends;
cin>>num;
zhumian_list=new int[num];
cout<<"请输入磁盘请求的柱面次序:"<<endl;
for(int i=0;i<num;i++)
cin>>zhumian_list[i];
cout<<"请输入当前磁头所处的柱面:"<<ends;
cin>>cur_loc;
}
int Elevator::sort_ASC()
{
sorted_list=new int[num+1];
sorted_list[0]=cur_loc;
int temp=0;
for(int i=1;i<num+1;i++)
sorted_list[i]=zhumian_list[i-1];
for(i=0;i<num+1;i++)
for(int j=num;j>i;j--)
{
if(sorted_list[j-1]>sorted_list[j])
{
temp=sorted_list[j-1];
sorted_list[j-1]=sorted_list[j];
sorted_list[j]=temp;
}
}
for(i=0;i<num+1;i++)
if(sorted_list[i]==cur_loc)
return i;
return -1;
}
void Elevator::output()
{
int choice=0,i,temp;
temp=sort_ASC();
cout<<"请选择磁头移动方向:\n"<<"1--向里(正向柱面小的方向移动)\n2--向外(正向柱面大的方向移动)"<<endl<<"您的选择是:"<<ends;;
cin>>choice;
switch(choice)
{
case 1:
cout<<"电梯调度算法的磁头访问序列:"<<ends;
if(sorted_list[temp]!=sorted_list[temp+1])
{
for(i=temp-1;i>=0;i--)
cout<<sorted_list[i]<<" "<<ends;
for(i=temp+1;i<num+1;i++)
cout<<sorted_list[i]<<" "<<ends;
}
else
{
for(i=temp;i>=0;i--)
cout<<sorted_list[i]<<" "<<ends;
for(i=temp+2;i<num+1;i++)
cout<<sorted_list[i]<<" "<<ends;
}
cout<<endl;
break;
case 2:
cout<<"电梯调度算法的磁头访问序列:"<<ends;
for(i=temp+1;i<num+1;i++)
cout<<sorted_list[i]<<" "<<ends;
for(i=temp-1;i>=0;i--)
cout<<sorted_list[i]<<" "<<ends;
cout<<endl;
break;
default:
cout<<"输入错误,强制退出!"<<endl;
}
cout<<endl;
}
int main()
{
Elevator e;
e.input();
e.output();
int choice;
while(true)
{
cout<<"请选择:\t0--继续\n\t\t1--退出"<<endl<<"您的选择是:"<<ends;
cin>>choice;
cout<<endl;
switch(choice)
{
case 0:
e.input();
e.output();
break;
case 1:
exit(0);
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -