91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .cpp
    金幣: 1
    下載: 1 次
    發布日期: 2021-06-17
  • 語言: C/C++
  • 標簽: 磁盤調度??

資源簡介

(1) 實現的磁盤調度算法有FCFS,SSTF,SCAN,CSCAN和 NStepSCAN算法。 (2) 設定開始磁道號尋道范圍,依據起始掃描磁道號和最大磁道號數,隨機產生要進行尋道的磁道號序列。 (3) 選擇磁盤調度算法,顯示該算法的磁道訪問順序,計算出移動的磁道總數和平均尋道總數。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#include
#include
#include?
#include
#define?disknum??20
#define?INF?0x7fffffff
/*
(1) 實現的磁盤調度算法有FCFS,SSTF,SCAN,CSCAN和?NStepSCAN算法。
(2) 設定開始磁道號尋道范圍,依據起始掃描磁道號和最大磁道號數,隨機產生要進行尋道的磁道號序列。
(3) 選擇磁盤調度算法,顯示該算法的磁道訪問順序,計算出移動的磁道總數和平均尋道總數。

?這個確實是最簡單的,不過剛開始想生成不同的隨機數,有點麻煩,就沒有做了
*/
using?namespace?std;

void?FCFS(int?begin?int?disk[])
{
????cout<????cout<<“***********************FCFS?算法***************************\n“;
????int?len?=??0;
????int?sum?=?0?temp?=?begin;
????cout<<“磁道訪問順序為:“<????while(len?????{
????????cout<????????sum?+=?abs(temp?-?disk[len]);
????????temp?=??disk[len];
????????len++;
????}
????cout<????cout<<“移動的磁道總數為:?“<}


struct?val
{
????int?item;
????int?min;
????int?temp?;
};?//?獲取臨時最近的下標和值和距離
val?getClose(int?num?int?disk[]?int?len??val?v)
{
????int?array[len]?min?=?INF?item?=?0;
????for(int?i?=?0?;?i?????{
????????array[i]?=?abs(num?-?disk[i]?);
????????if(array[i]?????????{
????????????min?=?array[i];
????????????item?=?i;
????????}

????}
????v.item?=?item;
????v.min?=?min;
????v.temp?=?disk[item];
????return?v;
}
void?SSTF(int?begin?int?disk[])
{
????cout<????cout<<“***********************SSTF?算法***************************\n“;
????int?len?=?disknum?i??sum?=?0?temp?=?begin;
??????int?arr[len];
??????for(?int?j?=?0;?j?????????arr[j]?=?disk[j];
?????cout<<“磁道訪問順序為:“<?????while(len?!=?0)
?????{
?????????val?v;
?????????v?=?getClose(temp?arr?len??v);
????????//?cout<?????????cout<?????????sum?=?sum?+?v.min;
?????????temp?=?v.temp;
?????????for(?i?=?v.item?+?1;?i??????????????arr[?i?-?1]?=?arr[i];
?????????len--;
?????}
????cout<????cout<<“移動的磁道總數為:?“<
}

void?SCAN(int?begin?int?disk[])
{
????cout<????cout<<“***********************SCAN?算法***************************\n“;
????int?arr[disknum]?;
????int?len?=?disknum?i??sum?=?0?temp?=?begin;
????for(?i?=?0;?i???????arr[i]?=?disk[i];
????sort(arr?arr?+?len?less());
????val?v?=?getClose(begin?arr?len?v);
????cout<<“磁道訪問順序為:“<????for(?i?=?v.item;?i?????{
????????cout<????????sum?+=?abs(temp?-?arr[i]);
????????temp?=?arr[i];
????}
????for?(?i?=?v.item?-?1;?i?>=?0;?i--?)
????{
????????cout<????????sum?+=?abs(temp?-?arr[i]);
????????temp?=?arr[i];
????}
????cout<????cout<<“移動的磁道總數為:?“<
}
void?CSCAN(int?begin?int?disk[])
{
????cout<

評論

共有 條評論