?? 磁盤調(diào)度.txt
字號:
// 磁盤調(diào)度.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 << "請求磁盤調(diào)度的個數(shù):";
cin >> num;
Disk *array = new Disk[num];
cout << "依次輸入各調(diào)度號序號及所在位置:\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平均移動道數(shù)為:" << 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平均移動道數(shù)為:" << 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平均移動道數(shù)為:" << double(sum)/N <<endl;
delete []flag;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -