2011-04-13 10 views
5

लूप्स रेती Horstmann के "सी ++ हर कोई के लिए" अध्याय 4 से सहायता की आवश्यकता है: लूप्ससी ++ व्यायाम

एक प्रोग्राम है जो n के सभी विषम अंक का योग कहते हैं लिखें। (उदाहरण के लिए, यदि n 32,677 है, योग होगा 3 + 7 + 7 = 17)

मैं कैसे कंप्यूटर बनाने के लिए पता नहीं है "देख" की तरह नंबर उन्हें अलग

उत्तर

8

n % 10 हो जाता है किसी के अंक का मूल्य। आप इसे वहां से समझ सकते हैं?

+0

हाँ मैं यह समझ से बाहर। मैंने अभी 10 के बाद संख्या को विभाजित करने के बारे में नहीं सोचा था – Alex

3

यहाँ एक संकेत है। सी ++ में मॉड्यूलस ऑपरेटर % है। यह शेष उत्पन्न करेगा जब दो संख्याओं को एक साथ विभाजित किया जाएगा। तो अगर मैं एक नंबर जो अधिक से अधिक 10 से था में पिछले अंक मैं 10 मापांक होगा जानते हैं और परिणाम

int lastDigit = number % 10; 
3

एक आधार -10 पूर्णांक i के पिछले अंक प्राप्त करना चाहता था i % 10 के बराबर है। (संदर्भ के लिए, % मॉड्यूलस ऑपरेटर है; यह मूल रूप से बाईं ओर बाएं संख्या को विभाजित करने से शेष देता है।)

तो, अब आपके पास अंतिम अंक है। एक बार जब आप करते हैं, एक चल कुल आप रख रहे हैं के लिए इसे जोड़ने विभाजित i 10 द्वारा (प्रभावी ढंग से अंक एक ही स्थान पर से नीचे स्थानांतरण), या अपने मामले 100 (दो स्थानों पर) में है, और शुरुआत में वापस शुरू करते हैं। i == 0 तक दोहराएं।

0

यहां के लोग नहीं बल्कि अपने अभ्यास का जवाब के साथ आप प्रदान नहीं, लेकिन इतना है कि आप अपने दम पर उत्तर मिल सकता है और अधिक महत्वपूर्ण यह समझ संकेत के साथ उपलब्ध कराने के लिए।

प्रारंभ करने के लिए अंकगणितीय आपरेशनों निम्नलिखित तुम्हारी मदद करेगा:

loop: 
    right_most_digit = n % 10 
    n = n/10 
end_loop 
संबंधित मुद्दे