• 0

تحويل الرقم الروماني لرقم عشري جافا

package Java;

import java.util.Scanner;

public class Main {

  public static void main(String[] args) {
   Scanner in =new Scanner(System.in);

   System.out.println("  ادخل الرقم الروماني");
   
   String x=in.next();
   
   System.out.printf("Roman= %S",x);
}

 

تمّ تعديل بواسطة Wael Aljamal
توضيح السؤال
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

الرقم الروماني لايمكن تخزينه كرقم int ضمن البرنامج، لأنه على شكل رموز ونظام عد مختلف، نخزنه على شكل سلسلة نصية

أولا علينا عمل دالة تستقبل الرمز الروماني وتعيد مقابله الرقم العشري الموافق لقيمته..

هذه الدالة تستقبل محرف وسيط و تعيد قيمة رقمية موافقة لها..

int value(char r)
    {
        if (r == 'I')
            return 1;
        if (r == 'V')
            return 5;
        if (r == 'X')
            return 10;
        if (r == 'L')
            return 50;
        if (r == 'C')
            return 100;
        if (r == 'D')
            return 500;
        if (r == 'M')
            return 1000;
        return -1;
    }

ثم علينا تعريف دالة تقوم بالمرور على سلسلة الرقم الروماني وحساب قيمته عن طريق تعويض كل رمز بالقيمة الموافقة له و إجراء العملية الرياضية المناسبة:

int romanToDecimal(String str)
    {
        // تهيئة الناتج
        int res = 0;
 
        for (int i = 0; i < str.length(); i++)  // المرور على النص بحلقة
        {
            // قراءة قيمة الرمز الحالي
            int s1 = value(str.charAt(i));
 
            // قراءة الرمز اللاحق
            if (i + 1 < str.length())
            {
                int s2 = value(str.charAt(i + 1));
 
                // مقارنة الرمزين
                if (s1 >= s2)
                {
                    // نقوم بجمع القيمتين إن كان الحالي أكبر من التالي
                    res = res + s1;
                }
                else
                {
                    // نقوم بالطرح
                    res = res + s2 - s1;
                    i++;
                }
            }
            else {
                res = res + s1;
            }
        }
 
        return res;
    }

وفي الشيفرة لديك، نطبق الدالة على المتغير X والذي هو سلسلة نصية

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن