#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int i,a[20];
void ran(){
srand((int)time(0));
for(i=0;i<20;i++)
{
a[i]=1+(int)(100.0*rand()/(RAND_MAX+1.0));
printf(" %d ",a[i]);
}
printf("\n");
}
void fcfs(){
int i,j=0,sum=0,x=23;
float s=0.0;
printf("先来先服务算法(FCFS)\n\n");
printf("\n 从%d号磁道开始 \n\n",x);
printf(" 被访问的下一个磁道号 ");
printf("移动距离(磁道数)\n");
for(i=0;i<20;i++){
if(x<a[i]) j=a[i]-x;
else j=x-a[i];
sum=sum+j;
x=a[i];
printf(" %d %d \n",a[i],j);
}
s=(float)sum/20;
printf("\n平均寻道长度为:%.2f\n\n",s);
}
void sstf(){
int i,j=0,sum=0,b[20],x=23,min,mnum;
float s=0.0;
printf("最短寻道时间优先算法(SSTF)\n\n");
printf("\n 从%d号磁道开始 \n\n",x);
printf(" 被访问的下一个磁道号 ");
printf("移动距离(磁道数)\n");
for(i=0;i<20;i++){
b[i]=0;
}
for(j=0;j<20;j++){
for(i=0;i<20;i++){
if(b[i]==-1) continue;
else{
if(x<a[i]) b[i]=a[i]-x;
else b[i]=x-a[i];
}
}
min=100;
mnum=0;
for(i=0;i<20;i++){
if(b[i]==-1) continue;
else{
if(min>b[i]){
mnum=i;
min=b[i];
}
}
}