⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elevator_algorithm.cpp

📁 该源码是为操作系统课程设计所写的
💻 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 + -