找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1633|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

機(jī)器調(diào)度算法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:189652 發(fā)表于 2017-5-28 10:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#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<<"請(qǐng)輸入機(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<<"所需時(shí)間是:";
              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è)所需時(shí)間為:"<<p[POINT].time<<endl;
                     POINT++;
                     cout<<endl;
              }
              while(POINT<=N){
                     doubleMIN=min(jiqi,M);
                     Time+=MIN;
                     cout<<MIN<<"分鐘過(guò)后"<<endl<<"機(jī)器"<<flag<<"完成上次作業(yè)。開(kāi)始處理作業(yè):"<<p[POINT].ID<<endl<<
                            "該作業(yè)所需時(shí)間為:"<<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<<"剩余處理時(shí)間"<<jiqi<<endl;
                                   cout<<endl;
                            }
                     }
              }
              Time+=max(jiqi,M);
              cout<<endl;
              cout<<"全部作業(yè)以處理完畢。消耗總時(shí)間為:"<<Time<<endl;
       }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表