سؤال

أحاول كتابة برنامج C++ يقوم بالتحويلات الأساسية.

أريد تحويل رقم عشري إلى جميع قواعد الأعداد الصحيحة الأخرى من 2 إلى 20.

هل هناك خوارزمية فعالة وسهلة التنفيذ للتحويلات الأساسية؟

هل كانت مفيدة؟

المحلول

لا أفهم أين المشكلة بالضبط؟من السهل جدًا والمباشر إجراء التحويل الأساسي:يمكنك أن تفعل ذلك كما تفعل باليد.

  • تقسيم رقم بواسطة قاعدة
  • اكتب الباقي
  • كرر العملية مع الجزء الصحيح من القسمة
  • توقف عندما تصل إلى الصفر
  • الباقي بالترتيب العكسي يعطيك الأرقام الموجودة قاعدة

مثال:

1025 (عشري) للأساس 15:

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

الرقم في الأساس 15 هو 485

نصائح أخرى

قد يكون لديك مشكلتين:

  • التحليل من القاعدة الأصلية إلى تمثيل الأعداد الصحيحة الأصلية للكمبيوتر (strtol جيد جدًا في هذا).

  • التنسيق في القاعدة الجديدة.(itoa جيد جدًا في هذا).

إذا كنت تريد أن تكتبها بنفسك، فقد يعجبك div وظيفة.تقوم بتغذية الرقم والقاعدة، وينقسم الرقم الموجود في أقصى اليمين.كرر للحصول على جميع الأرقام.

إذا كنت تريد أن تكون أكثر كفاءة، يمكنك القسمة على مربع الأساس، والحصول على رقمين في المرة الواحدة (استخدم جدول بحث للحصول على أحرف ASCII لكلا الرقمين). فيما يلي مثال على بعض التطبيقات الفعالة للغاية. لن يكون تغييره لاستخدام قاعدة مختلفة أمرًا صعبًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top