@@ -9,30 +9,34 @@ for(int i=0;i<n-1;i++)
9
9
return i;
10
10
break ;
11
11
}
12
- }
12
+ }
13
13
}
14
14
15
15
int main ()
16
16
{
17
17
int i,j,n;
18
18
int disk; // loc of head
19
- int temp,max;
19
+ int temp,max;
20
20
int dloc; // loc of disk in array
21
+ int no_t ;
22
+
23
+ printf (" enter total number of tracks\n " );
24
+ scanf (" %d" ,&no_t );
21
25
22
26
printf (" enter number of location\n " );
23
27
scanf (" %d" ,&n);
24
-
28
+
25
29
int d[n+1 ]; // disk queue
26
30
27
31
printf (" enter position of head\n " );
28
32
scanf (" %d" ,&disk);
29
-
33
+
30
34
printf (" enter elements of disk queue\n " );
31
35
for (i=0 ;i<n;i++)
32
36
{
33
37
scanf (" %d" ,&d[i]);
34
38
}
35
-
39
+
36
40
// d[n]=disk;
37
41
38
42
// printf("d[%d]=%d\n",n,disk);
@@ -61,11 +65,17 @@ int main()
61
65
printf (" %d " ,d[i]);
62
66
}
63
67
64
- printf (" enter your choice\n 1.left\n 2.Right\n " );
68
+ int prev_head;
69
+ printf (" enter previous head position\n " );
70
+ scanf (" %d" ,&prev_head);
65
71
66
72
int c;
67
73
int sum=0 ;
68
- scanf (" %d" ,&c);
74
+
75
+ if (prev_head>disk)
76
+ c=1 ;
77
+ else
78
+ c=2 ;
69
79
70
80
// go towards left
71
81
if (c==1 )
@@ -77,10 +87,13 @@ int main()
77
87
// break;
78
88
// }
79
89
previous = previous-1 ;
80
- printf (" %d\n " ,previous);
90
+
91
+ printf (" previous=%d\n " ,previous);
81
92
82
93
sum+=abs (disk-d[previous]);
83
94
95
+ printf (" sum=%d\n " ,sum);
96
+
84
97
printf (" %d->" ,disk);
85
98
86
99
for (i=previous;i>=0 ;i--)
@@ -91,17 +104,20 @@ int main()
91
104
else if (i==0 )
92
105
sum+=d[i];
93
106
}
94
-
107
+ printf ( " sum=%d \n " ,sum);
95
108
printf (" 0 ->" );
96
109
97
110
sum+=d[previous+1 ];
111
+ printf (" sum=%d\n " ,sum);
98
112
99
113
for (i=previous+1 ;i<n;i++)
100
114
{
101
115
printf (" %d ->" ,d[i]);
102
116
103
117
if (i!=n-1 )
104
118
sum+=abs (d[i+1 ]-d[i]);
119
+
120
+ printf (" sum=%d\n " ,sum);
105
121
}
106
122
107
123
printf (" \n movement of total cylinders %d\n " ,sum);
@@ -128,10 +144,12 @@ else if(c==2)
128
144
printf (" %d ->" ,d[i]);
129
145
if (i!=n-1 )
130
146
sum+=abs (d[i+1 ]-d[i]);
131
- // else if(i==n-1)
132
- // sum+=d[i];
147
+ else if (i==n-1 )
148
+ sum+=( no_t - 1 - d[i]) ;
133
149
}
134
- sum+=abs (d[n-1 ]-d[previous-1 ]);
150
+ printf (" %d ->" ,no_t -1 );
151
+
152
+ sum+=abs (no_t -1 -d[previous-1 ]);
135
153
136
154
for (i=previous-1 ;i>=0 ;i--)
137
155
{
@@ -145,4 +163,4 @@ else if(c==2)
145
163
}
146
164
147
165
return 0 ;
148
- }
166
+ }
0 commit comments