如何在特定的回合中显示omnet ++的结果?
问题描述:
我模拟omnet ++(mixim)中的无线传感器网络,我想分析结果在特定的一轮,如500,1000,1500,2000,2500,3000,3500和4000.我写代码如下,但它的剂量不工作,并在496,492和502的某些回合中显示结果。我如何更改代码以显示我提到的具体的7轮? 代码:如果如何在特定的回合中显示omnet ++的结果?
int rr;
rr=static_cast<SensorNode *>(this->getParentModule()->getParentModule()->getSubmodule("node",1)->getSubmodule("netwl"))->GetRound();
if(abs(rr-500)<5 || abs(rr-1000)<5 || abs(rr-1500)<5 || abs(rr-2000)<5 || abs(rr-2500)<5 || abs(rr-3000)<5 || abs(rr-35000)<5 || abs(rr-4000)<5)
{
char ss1[30];
sprintf(ss1,"Dead_CHs_Round_%d",rr);
recordScalar(ss1,nDeadCH);
答
你的代码检查rr
和你预期的两轮之间的差值小于5小例如
rr = 496
if (abs(rr-500) < 5 || .....) {
// your code
}
//--> abs(496 - 500) < 5
//--> abs(-4) < 5
//--> 4 < 5 --> true
所以,你的if语句成为rr = 496
如此。 为了避免这种情况,删除abs()
和<5
并改变它像以下:
if(rr == 500 || rr == 1000 || .....) {
// your code
}
感谢回答我的问题,我已经改变了代码,但在结果是这么想的显示整个查房,我想,它只显示了轮次1000,2500和4000的结果,我写什么来显示另一轮? –
我稍微编辑了我的答案。 你可以发布你的if语句吗?所以我可以看看它。 – Ventu
int rr; () - > getSubmodule(“netwl”)) - > GetRound();返回页首返回页首返回页首返回页首返回页首返回页首 if(rr == 500 || rr == 1000 || rr == 1500 || rr == 2000 || rr == 2500 || rr == 3000 || rr == 3500 || rr == 4000 ) –