Получить каждое 100-е значение в цикле

есть ли способ, чтобы сделать это чище и не использовать tempvalue, как я сделал здесь?


обновление кода имело логическую ошибку и не показывало, что я делаю. Вот что я делаю:--3-->

var loopTempValue = noOfPackets / 100;
for(i=0; i < noOfPackets; i++)
{   
    DoStuff

    if (i == loopTempValue)
    {
         loopTempValue = loopTempValue + (noOfPackets / 100);
         UploadBackGroundWorker.ReportProgress(pross);
    }
}

обновление Final

вот как его исправили после обратной связи, THX ребята.

if (i % (noOfPackets / 100) == 0 && i != 0)
{
     UploadBackGroundWorker.ReportProgress(pross);
}

3 ответов


if (i % 100 == 0 && i != 0) { //YOUR CODE }

модуль фантастический для таких проверок.

подробнее о модуле -http://www.vias.org/cppcourse/chap04_01.html

обновление: я добавил && i != 0 для 0 дело быть верным.

Если вы хотите использовать tempvalue вместо жесткого кодирования 100, то это будет решение:

if (i % tempvalue == 0 && i != 0) { //YOUR CODE }

вы имеете в виду, что хотите, чтобы условие запускалось 100 раз во время цикла, т. е. каждые 36-я итерация? (В исходном коде вы удваиваете tempvalue каждый раз, поэтому он будет срабатывать только семь раз во время цикла.)

вы можете использовать оператор по модулю, чтобы проверить это. Это вызовет условие в последнем из каждого набора из 36 итераций:

for(i=0; i < 3600; i++) {
   \DoStuff

   if(i % 36 == 35) {
      \DoStuff
   }
}

if( (i+1 % (tempvalue+1) == 0)
{
      //DoStuff

      //tempvaule = tempvalue + tempvalue;
}