#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<<"請輸入機(jī)器數(shù)和作業(yè)數(shù),要求作業(yè)數(shù)大于機(jī)器數(shù):"<<endl; cout<<"機(jī)器數(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<<"機(jī)器"<<i<<"當(dāng)前正在處理作業(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<<"機(jī)器"<<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<<"機(jī)器"<<i<<"剩余處理時間"<<jiqi<<endl; cout<<endl; } } } Time+=max(jiqi,M); cout<<endl; cout<<"全部作業(yè)以處理完畢。消耗總時間為:"<<Time<<endl; } }
|