📄 cipan.txt
字号:
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
struct cipan
{
char id;
int zhu_n;
int cidao;
int _wuli;
int flag;
};
cipan tab[10];int g=-1;int s=0,u=0;
void creat(char a,int b,int c,int d)
{
g++;
tab[g].id=a;
tab[g].zhu_n=b;
tab[g].cidao=c;
tab[g]._wuli=d;
//tab[g].flag=e;
}
void creat()
{
creat('a',199,19,7);
creat('b',170,17,6);
creat('c',150,15,5);
creat('d',130,13,4);
creat('e',112,11,5);
creat('f',90,9,2);
creat('g',73,7,1);
creat('h',50,6,2);
creat('i',43,8,3);
creat('j',12,10,2);
}
void print(cipan a)
{
cout<<a.id<<" ";
cout<<a.zhu_n<<" ";
cout<<a.cidao<<" ";
cout<<a._wuli<<" ";
cout<<a.flag<<endl;
}
void print()
{
cout<<"进程名 柱面号 磁道号 物理地址 方向"<<endl;
for(int i=0;i<10;i++)
print(tab[i]);
}
void Elevator(int array[],int m) //先</A>要给出当前磁道号和移动臂的移动方向
{
int temp; int k=1;
int now,l,r,d; int i,j,sum=0;
for(i=0;i<m;i++)//排序
for(j=i+1;j<m;j++)
{
if(array[i]>array[j])
{
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
cout<<"////////////////////////////////"<<endl;
cout<<"当前的大小顺序是:"<<endl;
for( i=0;i<m;i++)
{
cout<<array[i]<<" ";
}
cout<<endl;
cout<<"请输入当前的柱面号:";
cin>>now;
if(array[m-1]<=now)//当前最大值
{
for(i=m-1;i>=0;i--)
cout<<array[i]<<" ";
sum=now-array[0];
}
else if(array[0]>=now)//当前最小值
{
for(i=0;i<m;i++)
cout<<array[i]<<" ";
sum=array[m-1]-now;
}
else//中间值
{
while(array[k]<now)
k++;
l=k-1;//l保存磁头到最小值的偏移地址
r=k;//r保存磁头到最大值的偏移地址
cout<<"请输入当前移动臂的移动的方向 (1 表示向内 ,0表示向外) : ";
cin>>d;
if(d==0)
{
for(j=l;j>=0;j--)
{
cout<<"当前磁头在:"<<endl;
cout<<array[j]<<endl;
for(int ii=0;ii<10;ii++)
if(tab[ii].zhu_n==array[j])
{
tab[ii].flag=0;
print(tab[ii]);
}
}
for(j=r;j<m;j++)
{
cout<<"当前磁头在:"<<endl;
cout<<array[j]<<endl;
for(int ii=0;ii<10;ii++)
if(tab[ii].zhu_n==array[j])
{
tab[ii].flag=1;
print(tab[ii]);
}
}
sum=now-2*array[0]+array[m-1];
}
else
{
for(j=r;j<m;j++)
{
cout<<"当前磁头在:"<<endl;
cout<<array[j]<<endl;
for(int ii=0;ii<10;ii++)
if(tab[ii].zhu_n==array[j])
{
tab[ii].flag=1;
print(tab[ii]);
}
}
for(j=l;j>=0;j--)
{
cout<<"当前磁头在:"<<endl;
cout<<array[j]<<endl;
for(int ii=0;ii<10;ii++)
if(tab[ii].zhu_n==array[j])
{
tab[ii].flag=0;
print(tab[ii]);
}
}
sum=-now-array[0]+2*array[m-1];
}
}
cout<<"移动的总道数: "<<sum<<endl;
}
void main()
{
creat();
print();
cout<<"为方便可提前创建申请表:"<<endl;
int tem[10];
for(int i=0;i<10;i++)
tem[i]=tab[i].zhu_n;
Elevator(tem,10);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -