我有一个整数参数,它应该控制在特定运行中事件发生的次数。
例如,如果每次运行的迭代次数为 1000,那么FREQ
如果我想让事件每 200 次迭代发生一次,则参数将为 5。但是,我希望能够更改迭代次数,但保持比率不变,并且FREQ
如果我根本不希望事件发生,也能够将参数设置为 0。
这是我目前正在使用的:
int N_ITER = 1000;
int FREQ = 5;
void doRun(){
int count = 0;
for (int i = 0; i < N_ITER; ++i){
if (FREQ > 0){
if (count < N_ITER/FREQ){
doSomething();
count++;
}
else{
doSomethingElse();
count = 0;
}
}
else{
doSomething();
}
}
}
这很好用,但它不适合我有嵌套的条件,特别是当我有两个很多时doSomething()
,我觉得它应该能够比这更容易完成。
我尝试将一个设置为有条件的if (FREQ > 0 && count < N_ITER/FREQ)
,但显然Floating point exception
因为除以零而抛出了一个。
我也尝试使用 try/catch 块,但就混乱而言,使用嵌套条件确实没有什么不同。这个问题有更优雅的解决方案吗?