设备管理--电梯调度算法

#include <stdio.h>
//将柱面号由大到小排序
void quence(int a[],int N)
{
int i,j;
int temp;
int max;
for(i=0;i<N;i++)
{
max=i;
for(j=i+1;j<N;j++)
{
if(a[j]>a[max])
max=j;
}
if(max!=i)
{
temp=a[max];
a[max]=a[i];
a[i]=temp;
}
}
printf(“柱面号从大到小排序为:”);
for(i=0;i<N;i++)
{
printf("%3d",a[i]);
}
printf("\n");
}
//电梯调度算法
void dianti(int a[],int N)
{
int b;
int c;
int i,j,m,n,s;
int k;
int len;//磁头移动的总距离
int len1,len2;
printf(“请输入刚访问完的柱面:\n”);
scanf("%d",&b);
for(i=0;i<N;i++)//寻找b位于哪两个个柱面之间
{
if(a[i]>b)
k=i;
}
printf(“请输入1或者-1:\n”);
scanf("%d",&c);
if(c1)//由外向内访问
{
printf(“访问的柱面序列为:”);
for(j=k+1;j<N;j++)
{
printf("%3d",a[j]);
}
len1=b-a[N-1];
for(m=k;m>=0;m–)
{
printf("%3d",a[m]);
}
len2=a[0]-a[N-1];
len=len1+len2;
printf("\n磁头移动的总距离为:");
printf("%d",len);
}
if(c
-1)//由内向外访问
{
printf(“访问的柱面序列为:”);
for(n=k;n>=0;n–)
{
printf("%3d",a[n]);
}
len1=a[0]-b;
for(s=k+1;s<N;s++)
{
printf("%3d",a[s]);
}
len2=a[0]-a[N-1];
len=len1+len2;
printf("\n磁头移动的总距离为:");
printf("%d",len);
}
}
int main()
{
int N;
int i;
printf(“请输入需要访问的柱面个数:\n”);
scanf("%d",&N);
int a[N];
printf(“请分别输入需要访问的柱面号:\n”);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
quence(a,N);
dianti(a,N);
return 0;
}

展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值