Hoida Ahamed نشر 10 أغسطس 2021 أرسل تقرير نشر 10 أغسطس 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(" الروماني ادخل الرقم"); for(int j=1;j<6;j++){ String x=in.next(); System.out.print(rode(x)); } } public static 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=='M') return 1000; return -1; } public static int rode(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+1; } else { res=res+s1-s2; i++; } } else { res=res+s1; } } return res; } } كيف اجعل هذا البرنامج اذا ادخل المستخدم MLIVيطبع البرنامج الرقم العشري المقابل تم التعديل في 10 أغسطس 2021 بواسطة عبود سمير وضع الأكواد في مكانها و توضيح السؤال اقتباس
0 سمير عبود نشر 10 أغسطس 2021 أرسل تقرير نشر 10 أغسطس 2021 هل بإمكانك التوضيح بشكل أكبر حتى يستطيع أحد المدربين مساعدتك اقتباس
0 Hoida Ahamed نشر 10 أغسطس 2021 الكاتب أرسل تقرير نشر 10 أغسطس 2021 بتاريخ 2 ساعات قال 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(" الروماني ادخل الرقم"); for(int j=1;j<6;j++){ String x=in.next(); System.out.print(rode(x)); } } public static 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=='M') return 1000; return -1; } public static int rode(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+1; } else { res=res+s1-s2; i++; } } else { res=res+s1; } } return res; } } هذا البرنامج يطلب من المستخدم يدخل رقم روماني ويطبع له رقم عشري. اريد تعديله بحيث : يدخل المستخدم الرقم الروماني MLVI (وليس رقم واحد كما في البرنامج السابق )فيطبع البرنامج الرقم العشري المقابل له كاملاً. اقتباس
0 سمير عبود نشر 10 أغسطس 2021 أرسل تقرير نشر 10 أغسطس 2021 بتاريخ 59 دقائق مضت قال Hoida Ahamed: اريد تعديله بحيث : يدخل المستخدم الرقم الروماني MLVI (وليس رقم واحد كما في البرنامج السابق )فيطبع البرنامج الرقم العشري المقابل له كاملاً. لا أدري ما الذي تقصده لأن الآن عند إدخال عدد روماني يتم تحويله إلى عدد في النظام العشري و يطبعه ثم ينتظر البرنامج لإدخال عدد آخر و هكذا حتى 5 أعداد و بعد ذلك يتم إنهاء البرنامج. المشكلة لديك أن التحويل خاطئ بسبب خطأ في الدالة rode و هذا الصواب: public static int rode(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; } أما في الدالة value فينقصك إكمال بقية الرموز: فالرمز C يوافقه العدد 100 و الرمز D يوافقه 500 لتُصبح الدالة بهذا الشكل: public static 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; } ليُصبح البرنامج بهذا الشكل: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in =new Scanner(System.in); for(int j=1;j<6;j++){ System.out.println(" الروماني ادخل الرقم"); String x = in.next(); System.out.println(rode(x)); } } public static 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; } public static int rode(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; } } و هذه نتيجة التجربة بعد إدخال الأعداد الرومانية: الروماني ادخل الرقم MLVI 1056 الروماني ادخل الرقم MLIV 1054 الروماني ادخل الرقم XL 40 الروماني ادخل الرقم MCMIV 1904 الروماني ادخل الرقم MDCV 1605 ...Program finished with exit code 0 Press ENTER to exit console. اقتباس
0 إياد الاسماعيل نشر 10 أغسطس 2021 أرسل تقرير نشر 10 أغسطس 2021 مرحبًا@Hoida Ahamed، يوجد لك سؤال مشابه لهذاالسؤال كن قد نشرتيه منذ بضعة ساعات، أرجو متابعة الأسئلة التي تنشريها وعدم تكرارها اقتباس
السؤال
Hoida Ahamed
كيف اجعل هذا البرنامج اذا ادخل المستخدم
MLIVيطبع البرنامج الرقم العشري المقابل
تم التعديل في بواسطة عبود سميروضع الأكواد في مكانها و توضيح السؤال
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.