📄 sev.h
字号:
#ifndef SEV_H
#define SEV_H
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#include "link.h"
#include "event.h"
class Sev
{
public:
Sev(double m,int sid);
~Sev();
int sevEvt();
void updateTim();
void sendMes();
double getTim();
int getSta();
int getSid();
list<Mess>* sch;
list<Event>* que;
Event* evt;
double mu;
private:
double Tim;
int sta;
int sevId;
};
Sev::Sev(double m,int sid):Tim(0),mu(m),sch(NULL),que(NULL),evt(NULL),sta(0),sevId(sid){}
Sev::~Sev(){sch=NULL;que=NULL;evt=NULL;}
double Sev::getTim(){return Tim;}
int Sev::getSta(){return sta;}
int Sev::getSid(){return sevId;}
int Sev::sevEvt()
{
assert(que);
if(evt!=NULL)
delete(evt);
evt=NULL;
if(que->getLen()==0)
{
sta=0;
updateTim();
}
else
{
evt=que->getHead();
assert(evt);
sta=1;
evt->setInqStp(Tim);
updateTim();
evt->setEndStp(Tim);
}
sendMes();
return sta;
}
void Sev::sendMes()
{
assert(sch);
sch->addPri(new Mess(sevId,Tim));
}
void Sev::updateTim()
{
Mess* ms=NULL;
if(sta==0)
{
#ifdef _DEBUG_
//cout<<"empty in queue ["<<sevId<<"]"<<endl;
#endif
assert(sch);
if(sch->getLen()!=0)
{
ms=sch->sechGenMes();
if(ms!=NULL)
Tim=ms->getTim();
}
}
if(sta==1)
{
double p, delt;
while(1)
{
p=(double)rand()/((double)RAND_MAX+1.0);
if(p!=0)
break;
}
delt=-log(p)/mu;
Tim=Tim+delt;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -