#include <stdio.h>
#include <stdlib.h>
int main() {
int a[20], n, h, size, i, j, t, d, cur, seek;
printf("Enter number of requests: ");
scanf("%d", &n);
printf("Enter requests: ");
for(i=0;i<n;i++) scanf("%d",&a[i]);
printf("Enter head position and disk size: ");
scanf("%d%d",&h,&size);
// FCFS
seek=0; cur=h;
for(i=0;i<n;i++) seek+=abs(a[i]-cur), cur=a[i];
printf("FCFS: %d\n",seek);
// Sort requests
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j]) t=a[i],a[i]=a[j],a[j]=t;
// SCAN (towards 0 first)
seek=h; d=0;
for(i=0;i<n;i++) if(a[i]>=h) break;
for(j=i-1;j>=0;j--) seek+=abs(a[j]-seek);
seek+=seek; // incorrect?
printf("SCAN: %d\n",seek);
// C-SCAN (towards higher cylinders)
seek=0; cur=h;
for(i=0;i<n;i++) if(a[i]>=h) break;
for(j=i;j<n;j++) seek+=abs(a[j]-cur),cur=a[j];
seek+=abs((size-1)-cur)+(size-1);
cur=0;
for(j=0;j<i;j++) seek+=abs(a[j]-cur),cur=a[j];
printf("C-SCAN: %d\n",seek);
return 0;
}5 views