磁盘寻道算法 实验报告 下载本文

内容发布更新时间 : 2024/11/18 10:54:27星期一 下面是文章的全部内容请认真阅读。

a[j] = temp; } }

printf(\ if (i % 10 == 9){ printf(\ } }

printf(\请输入当前磁道号:\\n\ scanf(\ if (a[0] >= now){

printf(\当前访问的磁道:%d\\n\ for (i = 0; i < n - 1; i++){

printf(\当前访问的磁道:\\t%d\\n\

}

sum = a[n - 1] - now;

printf(\移动的总磁道数:%d\\n\ }

else if (a[n - 1] <= now){

printf(\当前访问的磁道:%d\\n\ for ( j = n - 1; i>=0; j--){

printf(\当前访问的磁道:\\t%d\\n\

}

sum = now - a[0];

printf(\移动的总磁道数:%d\\n\ }

else{

int d;

while (a[k] < now){ k++; }

j = k - 1;

printf(\请输入当前磁头移动的方向(0向内,1向外):\\n\ scanf(\ if (d == 1){ int i = 0;

for (int t = k; t < n; t++){

printf(\当前访问的磁道:\\t%d\\n\ sum += a[t] - now; now = a[t]; }

for (int t = 0; t < k; t++){

printf(\当前访问的磁道:\\t%d\\n\ }

sum += a[n-1] - a[0]+a[j]-a[0]; }

else if (d == 0){

for (int t = j; t >= 0; t--){

printf(\当前访问的磁道:\\t%d\\n\ sum += now - a[t]; now = a[t]; }

for (int t = n-1; t >=k; t--){

printf(\当前访问的磁道:\\t%d\\n\ }

sum += a[n - 1] - a[0]+a[n-1]-a[k]; }

else{

printf(\输入错误,重新回到选择算法界面!\\n\ }

}

printf(\经过的总磁道数为:%d\\n\

printf(\移动的平均磁道数:%.2lf\\n\ printf(\请再次输入你想使用的方法:\\n\}

/* 主函数*/ int main() {

int n;//磁道数

int control=1;//控制处理的方式

printf(\请输入要处理的磁道数:\\n\ scanf(\ int c[1000];

printf(\随机生成磁道号:\\n\ srand((unsigned)time(NULL)); //srand((unsigned)time(NULL));

for (int i = 0; i < n; i++){ c[i] = (rand() % 100) + 1; printf(\ if (i % 10 ==9){ printf(\ } }

printf(\数据生成成功!\\n\ printf(\ printf(\算法选择\\n\

printf(\最短寻道时间算法\\n\ printf(\扫描算法\\n\ printf(\循环扫描算法\\n\ printf(\退出程序\\n\ printf(\

/*算法选择*/

printf(\请输入你想使用的方法:\\n\ while (control){

scanf(\ switch (control){ case 0: break;

case 2:

SSTF(c, n); break; case 3:

SCAN(c, n); break; case 4:

CSCAN(c, n); break; default:

printf(\选项错误!重新选择!\ break; } }

printf(\程序退出成功,谢谢使用!\ system(\ return 0; }

[实验结果]

[心得体会]

通过本次试验,我清楚的理解到了磁盘扫描算法;最短寻道算法、循环算法、扫描算法。在理论理解的基础上又加深了一个层次,但是在到吗过程中还是有很大的欠缺,我会在以后的学习过程中好好的弥

补代码里的错误,提高编写代码的能力。