📄 lab17a.c
字号:
#include<stdio.h>
int list[30],list1[30];
main()
{
int m,ch,st,end,head,n,i,j,temp;
char c;
do
{
system("clear");
printf("\n MAIN MENU ");
printf("\n DISK SCHEDULING");
printf("\n1.FCFS");
printf("\n2.SSTF");
printf("\n3.SCAN");
printf("\n4.C-SCAN");
printf("\n5.LOOK");
printf("\n6.C-LOOK");
printf("\n7. EXIT");
printf("\n Enter ur choice :");
scanf("%d",&ch);
if(ch==7)
system("exit");
else
{
printf("\n Enter the limits of track ie. starting & ending point:");
scanf("%d %d",&st,&end);
printf("Enter starting head position :");
scanf("%d",&head);
printf("\n Enter the no. of tracks:");
scanf("%d",&n);
printf("\n Enter the track list :");
for(i=0;i<n;i++)
{
scanf("%d",&list[i]);
if(list[i]<st || list[i]>end)
{ printf("\n INVALID TARCK re_enter please :");
scanf("%d",&list[i]);
}
}
// copying list
for(i=0;i<n;i++)
list1[i]=list[i];
list1[i]=head;
m=n+1;
//sorting list1
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
{
if(list1[i]>list1[j])
{
temp=list1[i];
list1[i]=list1[j];
list1[j]=temp;
}
}
printf("\n");
switch(ch)
{
case 1: fcfs(head,n); break;
// case 2: sstf(); break;
case 3: scan(head,m,st); break;
case 4: c_scan(head,m,st,end); break;
case 5: look(head,m); break;
case 6: c_look(head,m); break;
// case 7: system("exit");
default : printf("\n invalid input");
}
printf("\n Do u wanna to continue :");
scanf(" %c",&c);
}
}while(c=='y' || c=='Y');
}
fcfs(int head,int n)
{
int i,x,sum=0;
//FCFS
for(i=0;i<n;i++)
{
x=head-list[i];
if(x<0)
x*=-1;
sum=sum+x;
printf(" %d\n",sum);
head=list[i];
}
printf("\n Total HEAD MOVEMENT is %d",sum);
}
scan(int head,int n,int st)
{
int i,j,x,y,sum,pos;
for(i=0;i<n;i++)
{ if(list1[i]==head)
pos=i;
}
x=list1[pos]-st;
y=list1[n-1]-st;
sum=x+y;
printf("\n TOTAL HEAD MOVEMENT IS %d",sum);
}
c_scan(int head,int n,int st,int end)
{
int i,x,y,z,sum,pos;
for(i=0;i<n;i++)
{
if(list1[i]==head)
pos=i;
}
x=list1[pos]-st;
y=end-st;
z=end-list1[pos+1];
sum=x+y+z;
printf("\n TOTAL HEAD MOVEMENT is %d",sum);
}
look(int head,int n)
{
int i,x,y,sum,pos;
for(i=0;i<n;i++)
{
if(list1[i]==head)
pos=i;
}
x=list1[pos]-list1[0];
y=list1[n]-list1[0];
sum=x+y;
printf("\n TOTAL HEAD MOVEMENT is %d",sum);
}
c_look(int head,int n)
{
int i,x,y,z,sum,pos;
for(i=0;i<n;i++)
{
if(list1[i]==head)
pos=i;
}
printf(" pos=%d",pos);
x=list1[pos]-list1[0];
y=list1[n-1]-list1[0];
z=list1[n-1]-list1[pos+1];
sum=x+y+z;
printf("\n TOTAL HEAD MOVEMENT IS %d",sum);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -