Hoida Ahamed نشر 9 أغسطس 2021 أرسل تقرير نشر 9 أغسطس 2021 (معدل) 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); } تم التعديل في 9 أغسطس 2021 بواسطة Wael Aljamal توضيح السؤال 1 اقتباس
0 Wael Aljamal نشر 9 أغسطس 2021 أرسل تقرير نشر 9 أغسطس 2021 الرقم الروماني لايمكن تخزينه كرقم 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 والذي هو سلسلة نصية اقتباس
السؤال
Hoida Ahamed
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); }
توضيح السؤال
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.