Skip to content

Commit 9df2d3a

Browse files
authored
shortest seek time first added
1 parent 8f9f936 commit 9df2d3a

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

LAB-8/sstf.cpp

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
#include<bits/stdc++.h>
2+
3+
struct di
4+
{
5+
int num;
6+
int flag; //process is taken or not
7+
};
8+
9+
int main()
10+
{
11+
int i,j,sum=0,n,min1,loc,x,y;
12+
//struct disk d[20];
13+
int disk;
14+
//int ar[20],a[20];
15+
16+
printf("enter number of location\n");
17+
scanf("%d",&n);
18+
19+
struct di d[n];
20+
int ar[n],a[n];
21+
22+
printf("enter position of head\n");
23+
scanf("%d",&disk);
24+
25+
printf("enter elements of disk queue\n");
26+
for(i=0;i<n;i++)
27+
{
28+
scanf("%d",&d[i].num);
29+
d[i].flag=0;
30+
}
31+
32+
for(i=0;i<n;i++)
33+
{
34+
x=0; min1=0;loc=0;
35+
for(j=0;j<n;j++)
36+
{
37+
if(d[j].flag==0)
38+
{
39+
if(x==0)
40+
{
41+
ar[j]=disk-d[j].num;
42+
if(ar[j]<0)
43+
{
44+
ar[j]=d[j].num-disk;
45+
}
46+
min1=ar[j];
47+
loc=j;
48+
x++;
49+
}
50+
else
51+
{
52+
ar[j]=disk-d[j].num;
53+
if(ar[j]<0)
54+
{
55+
ar[j]=d[j].num-disk;
56+
}
57+
}
58+
if(min1>ar[j])
59+
{
60+
min1=ar[j];
61+
loc=j;
62+
}
63+
}
64+
}
65+
d[loc].flag=1;
66+
a[i]=d[loc].num-disk;
67+
if(a[i]<0)
68+
{
69+
a[i]=disk-d[loc].num;
70+
}
71+
72+
disk=d[loc].num;
73+
}
74+
75+
76+
for(i=0;i<n;i++)
77+
{
78+
sum=sum+a[i];
79+
}
80+
printf("\nmovement of total cylinders %d",sum);
81+
return 0;
82+
}

0 commit comments

Comments
 (0)