標題: 機器調(diào)度算法 [打印本頁]
作者: 123456請問 時間: 2017-5-28 10:11
標題: 機器調(diào)度算法
#include<iostream.h>
int flag;
typedef struct
{
int ID;
double time;
}zuoye;
double min(double x[],int n)
{
if(n>1){
double temp=x[1];
flag=1;
for(inti=2;i<=n;i++)
if(x<temp){
temp=x;
flag=i;
}
return temp;
}
else
{
flag=1;
return x[1];
}
}
double max(double x[],int n)
{
if(n>1){
double temp=x[1];
for(inti=2;i<=n;i++)
if(x>temp){
temp=x;
}
return temp;
}
else
{
return x[1];
}
}
void exchange(zuoye &A,zuoye &B)
{
zuoye temp=A;
A=B;
B=temp;
}
void Bubble(zuoye q[],int n)
{
for(int i=1;i<n;i++)
for(intj=i+1;j<=n;j++)
if(q.time<q[j].time )
exchange(q,q[j]);
}
void main()
{
int i;
int M,N;
double Time=0;
int POINT;
cout<<"請輸入機器數(shù)和作業(yè)數(shù),要求作業(yè)數(shù)大于機器數(shù):"<<endl;
cout<<"機器數(shù):";
cin>>M;
cout<<"作業(yè)數(shù):";
cin>>N;
zuoye *p=new zuoye[N+1];
if (M>=N)
cout<<"Error!"<<endl;
else
{
for(i=1;i<=N;i++)
{ p.ID=i;
}
double* jiqi=newdouble[M+1];
for(i=1;i<=N;i++)
{cout<<"作業(yè)"<<i<<"所需時間是:";
cin>>p.time;
}
Bubble(p,N);
POINT=1;
cout<<endl<<endl;
for( i=1;i<=M;i++)
{
jiqi=p[POINT].time;
cout<<"機器"<<i<<"當前正在處理作業(yè)"<<p[POINT].ID<<
endl<<"該作業(yè)所需時間為:"<<p[POINT].time<<endl;
POINT++;
cout<<endl;
}
while(POINT<=N){
doubleMIN=min(jiqi,M);
Time+=MIN;
cout<<MIN<<"分鐘過后"<<endl<<"機器"<<flag<<"完成上次作業(yè)。開始處理作業(yè):"<<p[POINT].ID<<endl<<
"該作業(yè)所需時間為:"<<p[POINT].time<<endl;
jiqi[flag]=p[POINT].time;
POINT++;
cout<<endl;
for(i=1;i<=M;i++)
{
if(i!=flag){
jiqi-=MIN;
cout<<"機器"<<i<<"剩余處理時間"<<jiqi<<endl;
cout<<endl;
}
}
}
Time+=max(jiqi,M);
cout<<endl;
cout<<"全部作業(yè)以處理完畢。消耗總時間為:"<<Time<<endl;
}
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |