2011-01-25 8 views
7

क्या इस क्लीनर को बनाने का कोई तरीका है और मैंने यहां किए गए टेम्पलव्यू का उपयोग नहीं किया है?लूप में प्रत्येक 100 वें मान प्राप्त करें


अद्यतन कोड में एक तर्क बग था और मैंने यह नहीं दिखाया कि मैं क्या कर रहा हूं। यह मैं क्या कर रहा है:

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

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

अद्यतन अंतिम

यह कैसे अपने तय प्रतिक्रिया के बाद, THX लोग है।

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

क्या तुमने कभी के बारे में ' =' ऑपरेटरों बारे में सुना है: यह 36 पुनरावृत्तियों के प्रत्येक सेट के अंत में हालत प्रदर्शित करेंगे? वे 'a = a b' जैसे ' = b' के साथ बयान बदलते हैं। उदाहरण: 'ए + = बी','% = बी', 'ए * = 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

अद्यतन: मैं 0 मामला सच होने के लिए && i != 0 गयी।

आप हार्ड 100 कोडिंग के बजाय tempvalue का उपयोग करना चाहते हैं, तो इस एक समाधान होगा:

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

आप tempvalue (जो यहां महत्वपूर्ण है) को बढ़ा रहे हैं –

+0

और यह 'i == 0' के लिए भी 'सत्य' है। –

+0

@ कैस्पर: ठीक है, उन्होंने कहा: "क्या इस क्लीनर को बनाने और टेम्पलव्यू का उपयोग नहीं करना जैसा मैंने यहां किया है"। इसलिए मैंने माना कि वह इसका उपयोग नहीं करना चाहता था। – raRaRa

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

     //tempvaule = tempvalue + tempvalue; 
} 
5

तुम्हारा मतलब है कि आप चाहते हैं शर्त पाश के दौरान 100 बार ट्रिगर किए जाने वाले, यानी हर 36 वें पुनरावृत्ति? (आपके मूल कोड में आप प्रत्येक बार tempvalue दोगुना करते हैं, इसलिए यह केवल लूप के दौरान सात बार ट्रिगर करेगा।)

आप इसके लिए जांच करने के लिए मॉड्यूल ऑपरेटर का उपयोग कर सकते हैं।

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

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

हाँ थैक्स को इंगित करने के लिए thx, मुझे लगता है कि exsample – Darkmage

+0

लिखते समय यह काफी मुश्किल लगता है हाँ, मैं इसे हर 100 वें समय ट्रिगर करना चाहता हूं। – Darkmage