我有一个整数参数,该参数应控制事件在特定运行中发生了多少次。
例如,如果每次运行的迭代次数为1000,那么如果我希望事件每200次迭代发生一次,则参数FREQ
将为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()
时,我觉得应该比这更容易实现。 / p>
我尝试将一个条件条件设为if (FREQ > 0 && count < N_ITER/FREQ)
,但显然是因为除以零而抛出了Floating point exception
。
我也尝试过使用try / catch块,但是就杂乱而言,它与使用嵌套条件没有什么不同。有没有更优雅的解决方案?
答案 0 :(得分:1)
如何重新安排条件?使用count < N_ITER/FREQ
代替count*FREQ < N_ITER
。如果为FREQ = 0
,则表达式仍为true。
int N_ITER = 1000;
int FREQ = 5;
void doRun() {
int count = 0;
for (int i = 0; i < N_ITER; ++i) {
if (count*FREQ < N_ITER) {
doSomething();
count++;
} else {
doSomethingElse();
count = 0;
}
}
}