📄 磁盘调度.txt
字号:
// 磁盘调度.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include <math.h>
typedef struct
{
char name;
int ad;
}Disk;
void FIFS(Disk *,int,int);
void Short(Disk *,int,int);
void Lift(Disk *,int ,int);
int main(int argc, char* argv[])
{
int num,place;
cout << "请求磁盘调度的个数:";
cin >> num;
Disk *array = new Disk[num];
cout << "依次输入各调度号序号及所在位置:\n";
for(int i = 0; i < num; i++)
{
cin >> array[i].name >> array[i].ad;
}
cout << "输入当前读写头位置:";
cin >> place;
FIFS(array,num,place);
Short(array,num,place);
Lift(array,num,place);
delete []array;
return 0;
}
void FIFS(Disk * array,int N,int place)
{
int sum = 0;
cout << "FIFS访问顺序:";
for(int i = 0; i< N; i++)
{
cout << array[i].name << " ";
sum += abs(place - array[i].ad);
place = array[i].ad;
}
cout << "\n平均移动道数为:" << double(sum)/N <<endl;
}
void Short(Disk *array,int N,int place)
{
bool *flag = new bool[N];
for(int j = 0;j<N; j++)
flag[j] = 0;
int sum = 0,temp,tempMove;
cout << "Short访问顺序:";
for(int i = 0; i< N; i++)
{
temp = 0;
tempMove=999;
for(int k = 0;k < N;k++)
{
if(!(flag[k]))
{
if(abs(array[k].ad - place) < tempMove)
{
temp = k;
tempMove = abs(array[k].ad - place);
}
}
}
cout << array[temp].name << " ";
sum += tempMove;
place = array[temp].ad;
flag[temp] = 1;
}
cout << "\n平均移动道数为:" << double(sum)/N <<endl;
delete []flag;
}
void Lift(Disk *array,int N,int place)
{
int PLACE = place;
int temp,tempMove;
bool *flag = new bool[N];
for(int j = 0;j<N; j++)
flag[j] = 0;
int sum = 0;
cout << "Lift访问顺序:";
for(int i = 0; i< N; i++)
{
if(array[i].ad <= PLACE)
{
temp = 0;
tempMove=999;
for(int k = 0;k < N;k++)
{
if(!(flag[k]) && array[k].ad <= PLACE)
{
if(abs(array[k].ad - place) < tempMove)
{
temp = k;
tempMove = abs(array[k].ad - place);
}
}
}
cout << array[temp].name << " ";
sum += tempMove;
place = array[temp].ad;
flag[temp] = 1;
}
}
for(i = 0; i< N; i++)
{
if(array[i].ad > PLACE)
{
temp = 0;
tempMove=999;
for(int k = 0;k < N;k++)
{
if(!(flag[k])&& array[k].ad > PLACE)
{
if(abs(array[k].ad - place) < tempMove)
{
temp = k;
tempMove = abs(array[k].ad - place);
}
}
}
cout << array[temp].name << " ";
sum += tempMove;
place = array[temp].ad;
flag[temp] = 1;
}
}
cout << "\n平均移动道数为:" << double(sum)/N <<endl;
delete []flag;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -