2011-01-25 5 views
7

이 클리너를 만들고 여기에서했던 것처럼 tempvalue를 사용하지 않는 방법이 있습니까?루프에서 매 100 번째 값을 얻으십시오.


업데이트 코드에 논리 버그가 있으며 내가하는 일이 보이지 않았습니다. 이 내가 뭘하는지입니다 :

최종

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

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

UPDATE이 방법은 고정 피드백 후, THX들입니다.

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

혹시' ='사업자에 대해 들어 본 적이 :이 36 반복의 각 세트의 마지막에 조건을 트리거? 'a = a b'와 같은 문장을'a = b'로 바꿉니다. 예 :'a + = b','a % = b', a * = 2' ... – shybovycha

+0

명확하게 말하자면 코드에서와 같이 36, 72, 144, ... 순서를 원하거나 100,200 , 300 시퀀스 제목을 형성? –

+0

귀하의 요구 사항은 무엇입니까? – naveen

답변

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

계수는 다음과 같이 검사 용 훌륭하다. 계수에

더 - http://www.vias.org/cppcourse/chap04_01.html

UPDATE : 나는 진실되고 0 경우에 && i != 0을 추가했습니다. 대신 100을 하드 코딩의 tempvalue를 사용하려면

가, 다음이 해결책이 될 것입니다 :

if (i % tempvalue == 0 && i != 0) { //YOUR CODE } 
당신은 조건이 루프 동안 100 배를 트리거 할 것을 의미
+0

당신은 tempvalue를 조정하고 있습니다 (여기에서 중요합니다) –

+0

그리고 이것은'i == 0'에 대해서'true'입니다. –

+0

@Casper : 글쎄, 그는 이렇게 적었습니다. "내가 여기에서했던 것처럼이 값을 사용하지 말고 이것을 더 청결하게 만드는 것이 있습니까?" 그래서 나는 그가 그것을 전혀 사용하고 싶지 않다고 생각했습니다. – raRaRa

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

     //tempvaule = tempvalue + tempvalue; 
} 
5

, 즉 36 번째 반복마다? 원래 코드에서 매번 tempvalue를 두 배로하면 루프 중에 7 번만 트리거됩니다.

모듈러스 연산자를 사용하여이를 확인할 수 있습니다.

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

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

+1 또한 버그를 알아 차리기 위해 +1! – fearofawhackplanet

+0

예, 버그를 지적 해 주셔서 감사합니다. 예를 들어 엑스 샘플을 작성할 때 충분히 물마루가 있다고 생각합니다. – Darkmage

+0

예, 매 100 번째 시간마다 트리거하려고합니다. – Darkmage

관련 문제