📄 disk_scheding.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int select,i,head,way,j,temp;
int sum=0;
int disk[7];
printf("***************************************************\n");
printf("this is disk scheduling simulation\n");
printf("please select the algorithm you wan to simulation\n");
printf("1.C-Look 2.FCFS 3.SSTF\n");
scanf("%d",&select);
printf("please input the disk scan queue(1-200)\n");
for(i=0;i<=9;i++)
{
scanf("%d",&disk[i]);
if(disk[i]>200||disk[i]<1)
{
printf("error!\n");
exit(0);
}
}
printf("please input the disk head position(1-200)\n");
scanf("%d",&head);
if(head>200||head<1)
{
printf("error!\n");
exit(0);
}
printf("please input the way the head to\n 1: 1-200 2: 200-1 \n");
scanf("%d",&way);
if(way!=1&&way!=2)
{
printf("error!\n");
exit(0);
}
if(select==1)
{
for(i=0;i<=9;i++) //对queue排序
{
for(j=9;j>i;j--)
if(disk[j]<disk[j-1])
{
temp=disk[j];
disk[j]=disk[j-1];
disk[j-1]=temp;
}
}
for(i=0;i<=9;i++)
if(head>=disk[i]&&head<=disk[i+1])
{
temp=i+1;
break;
}
if(way==1)
{
for(i=0;i<=9;i++)
{
printf("now disk head to %d\n",disk[temp]);
printf("yi dong de ci dao shu wei:%d",abs(head-disk[temp]));
sum=sum+abs(head-disk[temp]);
head=disk[temp];
temp=(temp+1)%10;
printf("---------------------------------------------\n");
}
}
if(way==2)
{
temp=temp-1;
for(i=0;i<=9;i++)
{
printf("now disk head to %d\n",disk[temp]);
head=disk[temp];
printf("yi dong de ci dao shu wei:%d\n",abs(head-disk[temp]));
sum=sum+abs(head-disk[temp]);
temp=temp-1;
if(temp<0)
temp=9;
printf("\n---------------------------------------------\n");
}
}
}
else if(select==2)
{
for(i=0;i<=9;i++)
{
printf("now disk head to %d\n",disk[i]);
printf("yi dong de ci dao shu wei:%d",abs(head-disk[i]));
sum=sum+abs(head-disk[i]);
head=disk[i];
printf("\n---------------------------------------------\n");
}
}
else if(select==3)
{
int min=10;
int distance[11];
int flag[10]={1,1,1,1,1,1,1,1,1,1};
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
distance[j]=abs(head-disk[j]);
}
distance[min]=255;
for(j=0;j<9;j++)
{
if(distance[min]>distance[j])
{
if(flag[j]==1)
min=j;
}
}
printf("least is :%d\n",min);
printf("now disk head to %d\n",disk[min]);
printf("yi dong de ci dao shu wei:%d:",abs(head-disk[min]));
sum=sum+abs(head-disk[min]);
head=disk[min];
flag[min]=0; //have tackled
printf("\n---------------------------------------------\n");
}
}
printf("yi gong yi dong de ci dao shu wei:%d",sum);
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -