联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp2

您当前位置:首页 >> Web作业Web作业

日期:2018-05-18 09:11


class server//创???建?§服¤t务?器??的ì?类¤¨¤

{

public:

server()//服¤t务?器??类¤¨¤构1造¨?函?¥数oy

{

surplus_cpu=1;//初?始o?化?¥剩o?ê余?¨¤CPU为a1

surplus_memory=1;//初?始o?化?¥剩o?ê余?¨¤内¨2存??为a1

}

bool is_full()//判D断?服¤t务?器??是o?否¤?已°?满¨2

{

if(surplus_memory<=0.0005||surplus_cpu<=0.00005)//取¨?值|ì为a两¢?属o?性?最á?小?值|ì

return 1;

else

return 0;

}

bool overstep(double cpu,double memory)//判D断?是o?否¤?能¨1将?进?程¨?放¤?入¨?服¤t务?器??中D

{

if(surplus_cpu-cpu>=0&&surplus_memory-memory>=0)

return 1;

else

return 0;

}

double is_fit(double cpu,double memory)//判D断?最á?合?适o¨o服¤t务?器??的ì?进?程¨?

{

e_percent=surplus_cpu*cpu+surplus_memory*memory;//计?算?进?程¨?向¨°量¢?的ì?内¨2积y

return e_percent;//向¨°量¢?内¨2积y

}

void lead_in(double cpu,double memory)//将?进?程¨?放¤?入¨?服¤t务?器??中D

{

surplus_cpu=cpu;

surplus_memory=memory;//剩o?ê余?¨¤memory减?少|¨′

};

~server()

{

quantity++;//一°?次??析?构1代?¨2表à¨a用??完a¨o一°?个?服¤t务?器??,ê?建?§立¢?é在¨2动?¥态??分¤?配?的ì?基¨′础??上|?

}

static int quantity;//服¤t务?器??数oy量¢?

private:

double surplus_cpu;

double surplus_memory;

double e_percent;//向¨°量¢?内¨2积y

};



【源文件】

#include<iostream>

#include"server.h"

#include<fstream>

int server::quantity=0;

using namespace std;

int main()

{

double data[1000][3];//创???建?§容¨Y纳¨|进?程¨?的ì?二t维?数oy组á¨|

ifstream infile;

infile.open("1000个?进?程¨?CPU和¨a内¨2存??占?用??量¢?.Txt");//打?¨°开a数oy据Y文?件t

if(!infile.is_open())

{

cout<<"文?件t打?¨°开a失o?ì败?¨1"<<endl;//检¨?测a文?件t是o?否¤?打?¨°开a

return 0;

}

for(int i=0;i<1000;i++)

{

for (int j=0;j<3;j++)

infile>>data[i][j];

};

infile.close();

server*x=new server();//创???建?§一°?个?服¤t务?器??

for(int k=0;k<1000;k++)//从?¨?第ì¨2一°?个?进?程¨?开a始o?遍à¨|历¤¨2

{

if(x->is_full())//检¨?测a服¤t务?器??是o?否¤?已°?满¨2

{

delete x;

server*x=new server();

}

double max_m=0;

int max_l=0;

for(int l=k;l<1000;l++)//开a始o?寻??找¨°内¨2积y最á?大?¨?的ì?进?程¨?

{

if(x->overstep(data[l][1],data[l][2]))//判D断?进?程¨?能¨1否¤?放¤?入¨?进?程¨?内¨2

{

double m=x->is_fit(data[l][1],data[l][2]);//得ì?出?内¨2积y

if(m>max_m)//比ਨ较?大?¨?小?

{

max_m=m;

max_l=l;

}

}


if(max_l!=-1)//有?D进?程¨?能¨1够?放¤?到ì?服¤t务?期¨2内¨2

{

x->lead_in(data[max_l][l],data[max_l][2]);

cout<<data[max_l][0]<<"";//被à?注á?é释o¨a掉ì?的ì?调ì??试o?信?息?é

for(int a=0;a<3;a++)//将?使o1用??过y的ì?进?程¨?放¤?到ì?前??面?去¨£¤

data[max_l][a]=data[k][a];

}

else//没?有?D进?程¨?能¨1够?放¤?到ì?服¤t务?器??内¨2

{

delete x;//下?一°?个?服¤t务?器??

cout<<endl;//被à?注á?é释o¨a掉ì?的ì?调ì??试o?信?息?é

server*x=new server();

k--;//重?新?遍à¨|历¤¨2上|?一°?个?进?程¨?

}

}

delete x;

cout<<endl;//被à?注á?é释o¨a掉ì?的ì?调ì??试o?信?息?é

cout<<"使o1用??服¤t务?器??数oy量¢?的ì?一°?个?较?小?值|ì为a:"<<server::quantity<<"个?"<<endl;

return 0;

}


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp