?? q.c
字號:
#include"stdio.h"
#include"stdlib.h"
#include"iostream.h"
#define maxsize 100
void FCFS(int array[],int m)
{
int sum=0,j,i;
for( i=0;i<m;i++)
{
cout<<array[i]<<" ";
}
for(i=0,j=1;j<m;i++,j++)
{
sum+=abs(array[j]-array[i]);
}
cout<<"移動的總道數(shù): "<<sum<<endl;
}
void ShortPath(int array[],int m)
{
int temp;
int k=1;
int now,l,r;
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;
}
}
for( i=0;i<m;i++)
{
cout<<array[i]<<" ";
}/*排序*/
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;
r=k;
while((l>=0)&&(r<m))
{
if((now-array[l])<=(array[r]-now))
{
cout<<array[l]<<" ";
sum+=now-array[l];
now=array[l];
l=l-1;
}
else
{
cout<<array[r]<<" ";
sum+=array[r]-now;
now=array[r];
r=r+1;
}
}
if(l=-1)
{
for(j=r;j<m;j++)
{
cout<<array[j]<<" ";
}
sum+=array[m-1]-array[0];
}
else
{
for(j=l;j>=0;j--)
{
cout<<array[j]<<" ";
}
sum+=array[m-1]-array[0];
}
}
cout<<"移動的總道數(shù): "<<sum<<endl;
}</P>
<P> </P>
<P>
void Elevator(int array[],int m) <a>file:
{
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;
}
}
for( i=0;i<m;i++)
{
cout<<array[i]<<" ";
}
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;
r=k;
cout<<"請輸入當前移動臂的移動的方向 (1 表示向內(nèi) ,0表示向外) : ";
cin>>d;
if(d==0)
{
for(j=l;j>=0;j--)
{
cout<<array[j]<<" ";
}
for(j=r;j<m;j++)
{
cout<<array[j]<<" ";
}
sum=now-2*array[0]+array[m-1];
}
else
{
for(j=r;j<m;j++)
{
cout<<array[j]<<" ";
}
for(j=l;j>=0;j--)
{
cout<<array[j]<<" ";
}
sum=-now-array[0]+2*array[m-1];
}
}
cout<<"移動的總道數(shù): "<<sum<<endl;
}</P>
<P>
void SCAN(int array[],int m)
{
int temp;
int k=1;
int now,l,r;
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;
}
}
for( i=0;i<m;i++)
{
cout<<array[i]<<" ";
}
cout<<"請輸入當前的磁道號:";
cin>>now;
if(array[m-1]<=now)
{
for(i=0;i<m;i++)
cout<<array[i]<<" ";
sum=now-array[0]+array[m-1];
}
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;
r=k;
for(j=r;j<m;j++)
{
cout<<array[j]<<" ";
}
for(j=0;j<r;j++)
{
cout<<array[j]<<" ";
}
sum=2*array[m-1]-now;
}
cout<<"移動的總道數(shù): "<<sum<<endl;
}
void main()
{
int c;
FILE *fp;
int cidao[maxsize];
int i=0,count;
fp=fopen("cidao.txt","r+");
if(fp==NULL)
{
cout<<"can not find file!"<<endl;
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%d",&cidao[i]);
i++;
}
count=i-1;
for(i=0;i<count;i++)
{
printf("%5d",cidao[i]);
}
cout<<endl;
while(1)
{
cout<<endl<<"系統(tǒng)的菜單如下:"<<endl;
printf("1. 先來先服務(wù) 2. 最短尋道時間優(yōu)先 3. 電梯調(diào)度");
cout<<endl;
printf("4. 單向掃描 5. 退出");
cout<<endl;
cout<<"請選擇:";
cin>>c;
if(c>4)
break;
switch(c)
{
case 1:
FCFS(cidao,count);
break;
case 2:
ShortPath(cidao,count);
break;
case 3:
Elevator(cidao,count);
break;
case 4:
SCAN(cidao,count);
break;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -