2011-01-25 11 views
7

Czy jest jakiś sposób, aby uczynić to czystszym i nie używać tempwalu tak jak tutaj?Zdobądź co 100-tą wartość w pętli


UPDATE kod miał błąd logiczny i nie pokazywał co robię. To, co robię:

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

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

UPDATE Finał

To w jaki sposób jej trwałe po zwrotne, chłopaki thx.

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

Czy kiedykolwiek słyszałeś o ' =' operatorach? zastępują instrukcje typu 'a = a b' z' a = b'. Np .: 'a + = b',' a% = b', 'a * = 2' ... – shybovycha

+0

Dla jasności, potrzebujesz sekwencji 36, 72, 144, ... jak w kodzie lub th 100200 , 300 sekwencji z tytułu? –

+0

jaki jest twój wymóg? – naveen

Odpowiedz

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

Moduł jest fantastyczny dla kontroli, takich jak ten.

Więcej na Modulus - http://www.vias.org/cppcourse/chap04_01.html

UPDATE: I dodaje && i != 0 dla 0 przypadku jest prawdą.

Jeśli chcesz użyć tempvalue zamiast twarde kodowania 100, wtedy byłoby to rozwiązanie:

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

Zmieniasz wartość tymczasową (która jest tutaj ważna). –

+0

A to jest również "prawda" dla 'i == 0'. –

+0

@Casper: Cóż, oświadczył: "Czy było to, aby uczynić to czystszym i nie używać tempvalue tak jak ja tutaj zrobiłem". Więc założyłem, że wcale nie chciał tego używać. – raRaRa

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

     //tempvaule = tempvalue + tempvalue; 
} 
5

To znaczy, że chcesz warunek być wyzwalany 100 razy podczas pętli, tj. co 36. iteracja? (W swoim oryginalnym kodzie podwajasz dwukrotnie wartość tempvalue za każdym razem, więc w pętli zadziała ona tylko siedem razy.)

Możesz użyć operatora modulo, aby to sprawdzić. Spowoduje to wyzwolenie warunku na końcu każdego zestawu 36 iteracji:

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

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

+1 za zauważenie błędu! – fearofawhackplanet

+0

tak, za wskazanie błędu, ale myślę, że to wystarczy, pisząc przykładową próbkę, – Darkmage

+0

tak, chcę, żeby uruchamiała się co 100 raz. – Darkmage

Powiązane problemy