(C++) शर्त के साथ लूप स्टेटमेंट - जबकि


<वें स्कोप="col">काउंटर <शरीर>
कार्यक्रम इस प्रकार रहेगा। #शामिल<iostream> नेमस्पेस एसटीडी का उपयोग करना; मुख्य() { इंट, गिनती; सिने>> एन; गिनती = 0; जबकि (एन! = 0) { गिनती ++; एन = एन / 10; } cout << "संख्या-" << n<< " शामिल है " << गिनती << " अंक";   } आपको इस कार्यक्रम को दिल से जानने की जरूरत है, क्योंकि। इसके आधार पर अंकों द्वारा संख्याओं की गणना से संबंधित अन्य अनेक समस्याओं का समाधान किया जाता है।

शर्त के साथ एक लूप। जबकि
कथन for लूप का अध्ययन करते हुए, हमने कहा कि यदि किसी क्रिया के दोहराव की संख्या ज्ञात है, तो आप for लूप ऑपरेटर का उपयोग करके प्रोग्राम को छोटा कर सकते हैं। लेकिन क्या होगा अगर दोहराव की संख्या अज्ञात है? और ऐसा अक्सर होता है।
 
उदाहरण
दशमलव संख्या प्रणाली से किसी अन्य में किसी संख्या के अनुवाद को याद करते हुए, हमें संख्या प्रणाली के आधार से संख्या (और फिर विभाजन का परिणाम) को तब तक विभाजित करना होगा जब तक कि हमें उत्तर में शून्य न मिल जाए। हम कितनी बार साझा करेंगे अज्ञात है। और ऐसे कई प्रोग्राम हैं जो इस तरह के एल्गोरिद्म को लागू करते हैं। 

अगर हम पुनरावृत्तियों की सटीक संख्या नहीं जानते हैं तो हम एल्गोरिद्म को कैसे लागू कर सकते हैं?

प्रोग्रामिंग में ऐसे मामलों के लिए, एक शर्त के साथ एक लूप स्टेटमेंट होता है। 
पायथन प्रोग्रामिंग भाषा में, एक कंडीशनल लूप स्टेटमेंट while शब्द से शुरू होता है और इसकी संरचना निम्न होती है।
जबकि (<स्थिति>) 
{
  लूप बॉडी
}

जैसा कि हम पहले से ही जानते हैं:
- स्थिति एक ऐसा व्यंजक है जो सत्य या असत्य का मूल्यांकन कर सकता है (जैसा कि एक सशर्त कथन में);
- लूप बॉडी दोहराए जाने वाले कमांड होते हैं, वे इंडेंट होते हैं।

ऑपरेटर कैसे काम करता है?
1. सबसे पहले, प्रोग्राम शब्द <कोड>जबकि के बाद कोष्ठक में स्थिति का मूल्यांकन करता है। यदि शर्त पूरी होती है (सत्य), तो प्रोग्राम लूप बॉडी में निहित बयानों को निष्पादित करता है।
2. लूप बॉडी का निष्पादन पूरा होने के बाद, प्रोग्राम स्थिति की जांच करने के लिए वापस आता है और इसे फिर से जांचता है।
3. ये क्रियाएं (स्थिति की जांच - लूप बॉडी को निष्पादित करना) तब तक दोहराई जाती हैं जब तक कि स्थिति झूठी नहीं हो जाती।
4. अगर इस स्टेटमेंट के पहले एक्जीक्यूशन के दौरान कंडीशन तुरंत पूरी (गलत) नहीं होती है, तो प्रोग्राम लूप बॉडी को कभी भी एक्जीक्यूट नहीं करेगा।

इस ऑपरेटर के काम का विश्लेषण करते हुए, यह स्पष्ट हो जाना चाहिए कि लूप बॉडी में एक ऑपरेटर होना चाहिए जो स्थिति को प्रभावित करता हो।
उदाहरण के लिए, एक लूप में, किसी स्थिति में उपयोग किए गए वेरिएबल का मान बढ़ाया जा सकता है।

प्रोग्राम का एक उदाहरण जिसे हम "साइलेंट काउंट" कहेंगे।
आइए, हमारी बजाय प्रोग्राम की गिनती करें, उदाहरण के लिए, 10 तक।
कार्यक्रम को "प्रारंभ" और "समाप्त", और इन क्रियाओं के बीच उन संख्याओं को प्रदर्शित करते हैं जिनकी गणना की जा रही है।

उदाहरण के लिए, इस तरह:
शुरू
1 2 3 4 5 6 7 8 9 10
समाप्त

जबकि लूप का उपयोग करने वाला प्रोग्राम इस तरह दिखेगा: #शामिल<iostream> नेमस्पेस एसटीडी का उपयोग करना; मुख्य() { int मैं; cout << "प्रारंभ\n"; मैं = 1; जबकि (मैं <= 10) { cout << मैं << " "; मैं++; // ऑपरेटर जो स्थिति में चर के परिवर्तन को प्रभावित करता है } cout << "\nसमाप्त"; }
इस प्रोग्राम में, हम वेरिएबल i = 1 - शुरुआती बिंदु के लिए एक मान निर्दिष्ट करते हैं।
इसके अलावा, जब तक हमारे पास i वेरिएबल का मान हमारे लिए आवश्यक मान से अधिक नहीं है (अर्थात, उससे कम या उसके बराबर), हम: 
 1. चर i;
का मान प्रदर्शित करें  2. वेरिएबल i के मान को 1 से बढ़ाएँ - यह ऑपरेटर कोष्ठक में स्थिति के मान को प्रभावित करता है। चर i बढ़ा हुआ है, जिसका अर्थ है कि किसी बिंदु पर स्थिति i <= 10 झूठी हो जाएगी। यह तब होगा जब i 11 के बराबर हो जाता है। इस स्थिति में, लूप बॉडी को निष्पादित नहीं किया जाएगा, और प्रोग्राम लूप के बाद अगला स्टेटमेंट निष्पादित करेगा, अर्थात। cout << "\nसमाप्त"

कार्य
आपको एक संख्या दर्ज करनी होगी (इसे 3,000,000 से कम होने दें) और इसमें अंकों की संख्या निर्धारित करें।
 
समाधान का उपाय
हमें बस संख्या से अंतिम अंक को क्रमिक रूप से काटने की आवश्यकता है (यह संख्या को 10 गुना कम करके, 10 से पूर्णांक विभाजन का उपयोग करके किया जा सकता है), और हर बार हमें काउंटर बढ़ाने की आवश्यकता होती है। 

परिणामस्वरूप, संख्या के सभी अंकों को काट देने के बाद, हमें उनका नंबर काउंटर में मिल जाएगा।

इस एल्गोरिदम को निम्नानुसार तैयार किया जा सकता है:
जब तक संख्या शून्य न हो जाए, इसे 10 से घटाएं और प्रत्येक बार काउंटर को 1 से बढ़ाएं।
  <टेबल क्लास = "टेबल-बॉर्डर्ड टेबल-लिस्ट-टेस्ट टेबल-एसएम टेबल-स्ट्राइप्ड"> <सिर>
संख्या (n)
123 0
12 1
1 2
0 3

कार्य

प्रोग्राम का इनपुट डेटा स्ट्रीम है — पूर्णांकों का एक क्रम जो शून्य में समाप्त होता है (शून्य अनुक्रम में शामिल नहीं है)। आपको इस अनुक्रम के तत्वों का योग खोजने की आवश्यकता है।
 
एल्गोरिद्म हल करना
<पूर्व> योग = 0 इनपुट एक्स // पहला नंबर दर्ज करें जबकि x != 0 // इनपुट एंड साइन स्थिति में सेट है,  एनसी // यानी जब तक आप शून्य दर्ज नहीं करते    sum = sum + x // आप मूल संख्या के साथ कुछ कर सकते हैं। // आप कुछ शर्त आदि के लिए एक नंबर चेक जोड़ सकते हैं।    इनपुट x // अगला नंबर दर्ज करें के.टी.एस. प्रिंट राशि // परिणाम आउटपुट