Получить каждое 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
}
}