Simulate the following disk scheduling algorithms SCAN
#include<stdio.h>
#include<conio.h>void main()
{
int size,n,q[20],visit[20],t,head,pos,seek=0,i,j;
printf("enter number of queue elements : ");
scanf("%d",&n);
printf("enter the work queue : ");
for(i=0;i<n;i++)
{
scanf("%d",&q[i]);
visit[i]=0;
}
printf("enter the disk head starting position : ");
scanf("%d",&head);
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(q[i]>q[j])
{
t=q[i];
q[i]=q[j];
q[j]=t;
}
}
}
for(i=n;i>=1;i--)
{
if(q[i]<head)
{
seek=seek+abs(head-q[i]);
visit[i]=1;
head=q[i];
}
}
for(i=0;i<n;i++)
{
if(visit[i]==0)
{
seek=seek+abs(head-0);
head=0;
break;
}
}
for(i=0;i<n;i++)
{
if(visit[i]==0)
{
seek=seek+abs(head-q[i]);
visit[i]=1;
head=q[i];
}
}
printf("total seek time : %d\n",seek);
}
Comments
Post a Comment