⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cipan.txt

📁 这是一个磁臂移动的算法程序,他模拟电梯算法来运算的,111111111111111111.
💻 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 + -