www.pudn.com > disk_scheding.rar > disk_scheding.c
#include#include #include 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[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; }