Skip to content

Commit e89ba0e

Browse files
authored
Updated with previous head
1 parent d96cd48 commit e89ba0e

File tree

1 file changed

+31
-13
lines changed

1 file changed

+31
-13
lines changed

LAB-8/scan2.cpp

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,34 @@ for(int i=0;i<n-1;i++)
99
return i;
1010
break;
1111
}
12-
}
12+
}
1313
}
1414

1515
int main()
1616
{
1717
int i,j,n;
1818
int disk; //loc of head
19-
int temp,max;
19+
int temp,max;
2020
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);
2125

2226
printf("enter number of location\n");
2327
scanf("%d",&n);
24-
28+
2529
int d[n+1]; //disk queue
2630

2731
printf("enter position of head\n");
2832
scanf("%d",&disk);
29-
33+
3034
printf("enter elements of disk queue\n");
3135
for(i=0;i<n;i++)
3236
{
3337
scanf("%d",&d[i]);
3438
}
35-
39+
3640
//d[n]=disk;
3741

3842
//printf("d[%d]=%d\n",n,disk);
@@ -61,11 +65,17 @@ int main()
6165
printf("%d ",d[i]);
6266
}
6367

64-
printf("enter your choice\n1.left\n2.Right\n");
68+
int prev_head;
69+
printf("enter previous head position\n");
70+
scanf("%d",&prev_head);
6571

6672
int c;
6773
int sum=0;
68-
scanf("%d",&c);
74+
75+
if(prev_head>disk)
76+
c=1;
77+
else
78+
c=2;
6979

7080
//go towards left
7181
if(c==1)
@@ -77,10 +87,13 @@ int main()
7787
// break;
7888
//}
7989
previous = previous-1;
80-
printf("%d\n",previous);
90+
91+
printf("previous=%d\n",previous);
8192

8293
sum+=abs(disk-d[previous]);
8394

95+
printf("sum=%d\n",sum);
96+
8497
printf("%d->",disk);
8598

8699
for(i=previous;i>=0;i--)
@@ -91,17 +104,20 @@ int main()
91104
else if(i==0)
92105
sum+=d[i];
93106
}
94-
107+
printf("sum=%d\n",sum);
95108
printf("0 ->");
96109

97110
sum+=d[previous+1];
111+
printf("sum=%d\n",sum);
98112

99113
for(i=previous+1;i<n;i++)
100114
{
101115
printf("%d ->",d[i]);
102116

103117
if(i!=n-1)
104118
sum+=abs(d[i+1]-d[i]);
119+
120+
printf("sum=%d\n",sum);
105121
}
106122

107123
printf("\nmovement of total cylinders %d\n",sum);
@@ -128,10 +144,12 @@ else if(c==2)
128144
printf("%d ->",d[i]);
129145
if(i!=n-1)
130146
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]);
133149
}
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]);
135153

136154
for(i=previous-1;i>=0;i--)
137155
{
@@ -145,4 +163,4 @@ else if(c==2)
145163
}
146164

147165
return 0;
148-
}
166+
}

0 commit comments

Comments
 (0)