2012-10-03 16 views
15

मैं एक सी ++ प्रोग्राम लिखने की कोशिश कर रहा हूं जो आधार-रूपांतरण करता है।आधार 10 से आधार एन रूपांतरण

मैं 20

2 से अन्य सभी पूर्णांक ठिकानों किसी दशमलव संख्या को परिवर्तित करना चाहते हैं वहाँ है एक कुशल और आसानी से लागू आधार रूपांतरण के लिए एल्गोरिथ्म?

+0

नंबरों को एक से दूसरे आधार में बदलने के लिए केवल एक ही तरीका है। वास्तव में समस्या क्या है? –

+0

जब आप "2 से 20 तक के सभी अन्य आधार" कहते हैं, तो मुझे लगता है कि आप सभी वास्तविक पूर्णांक अड्डों का मतलब 2 से 20 तक करते हैं? कोई अवास्तविक आधार नहीं, और कोई गैर-पूर्णांक आधार नहीं है? वे कठिन हैं। –

+0

इसके अलावा, समस्या क्या है? हमें अब तक का कोड दिखाएं। –

उत्तर

23

मुझे समझ में नहीं आता कि वास्तव में समस्या कहां है? आधार रूपांतरण करने के लिए यह बहुत आसान और कठोर है: आप ऐसा करते हैं जैसे आप हाथ से करेंगे।

  • डिवाइड संख्याआधार द्वारा
  • शेष
  • दोहराने विभाजन का पूर्णांक भाग
  • रोक जब आप शून्य
  • रिवर्स में शेष तक पहुँचने के साथ प्रक्रिया को लिख लें आदेश आपको आधार
में अंक दें

उदाहरण:

1025 (दशमलव) के आधार के लिए 15:

1025/15 = 68 , remainder 5 
68 /15 = 4 , remainder 8 
4 /15 = 0 , remainder 4 

आधार 15 में नंबर 485

2

आप दो समस्याएं हो सकती हैं:

  • से पार्स कंप्यूटर के मूल पूर्णांक प्रतिनिधित्व के मूल आधार (strtol इस पर काफी अच्छा है)।

  • नए आधार में स्वरूपण। (itoa इस पर काफी अच्छा है)।

यदि आप इसे स्वयं लिखना चाहते हैं, तो आपको div function पसंद हो सकता है। आप संख्या और आधार में फ़ीड करते हैं, और यह सही अंक को विभाजित करता है। सभी अंक प्राप्त करने के लिए दोहराएं।

यदि आप अधिक कुशल बनना चाहते हैं, तो आप आधार वर्ग से विभाजित हो सकते हैं, और एक समय में दो अंक प्राप्त कर सकते हैं (दोनों अंकों के लिए ASCII वर्ण प्राप्त करने के लिए एक लुकअप तालिका का उपयोग करें)। Here's an example of some very efficient implementations. इसे एक अलग आधार का उपयोग करने के लिए बदलना मुश्किल नहीं होगा।

संबंधित मुद्दे