Programming

محوّل أرقام رومانية فعال بلغة C++

Spread the love

تستكشف هذه المقالة إنشاء محوّل للأرقام الرومانية في لغة C++ . سنتعمق في عملية التحويل، مع التركيز على تحويل الأرقام العشرية إلى نظيراتها من الأرقام الرومانية. إن الفهم الواضح للمنطق الكامن وراء ذلك أمر بالغ الأهمية لتطوير كود فعال ودقيق.

محتويات

تحويل العدد العشري إلى رقم روماني

يستخدم النظام العددي الروماني مجموعات من الحروف لتمثيل الأعداد. لكل حرف قيمة عددية محددة:

  • I = 1
  • V = 5
  • X = 10
  • L = 50
  • C = 100
  • D = 500
  • M = 1000

يتضمن التحويل التكرار عبر هذه القيم، مع إضافة أو طرح استراتيجي بناءً على موضع الرقم والقيم المجاورة. على سبيل المثال، IV (4) هو V (5) – I (1)، و IX (9) هو X (10) – I (1). هذا المبدأ الطرحي هو مفتاح التمثيل الفعال.

التطبيق في لغة C++

تقوم دالة C++ التالية بتحويل الأرقام العشرية إلى أرقام رومانية بكفاءة:


#include <iostream>
#include <map>
#include <string>

std::string decimalToRoman(int num) {
    if (num <= 0 || num > 3999) return "Invalid Input";

    std::map<int, std::string> romanMap = {
        {1000, "M"}, {900, "CM"}, {500, "D"}, {400, "CD"},
        {100, "C"}, {90, "XC"}, {50, "L"}, {40, "XL"},
        {10, "X"}, {9, "IX"}, {5, "V"}, {4, "IV"}, {1, "I"}
    };

    std::string result = "";
    for (auto const& [value, symbol] : romanMap) {
        while (num >= value) {
            result += symbol;
            num -= value;
        }
    }
    return result;
}

int main() {
    int decimalNum;
    std::cout << "أدخل عددًا عشريًا (1-3999): ";
    std::cin >> decimalNum;
    std::string romanNum = decimalToRoman(decimalNum);
    std::cout << "المقابل بالرقم الروماني هو: " << romanNum << std::endl;
    return 0;
}

يستخدم هذا الكود خريطة للبحث الفعال عن الرموز وحلقة while للمعالجة الأرقام المتكررة. يتم تعريف حالات الطرح (مثل 4 و 9) صراحةً في الخريطة لتحقيق الأداء الأمثل.

معالجة الأخطاء والكفاءة

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

الخلاصة

قدمت هذه المقالة طريقة واضحة وفعالة لتحويل الأرقام العشرية إلى أرقام رومانية في لغة C++. يُحسّن استخدام الخريطة من قابلية القراءة والأداء على حد سواء. هذا النهج سهل التكيّف مع معالجة أعداد أكبر أو دمجه في تطبيقات أكثر تعقيدًا. تذكر دائمًا معالجة الأخطاء الشاملة للحصول على حل جاهز للإنتاج.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *