เลขโรมันเป็นตัวเลขที่ไม่มีตำแหน่ง ตัวเลขบางตัวถูกนำมารวมกันเพื่อสร้างตัวเลขในเลขโรมัน ตัวอย่างเช่น ตัวเลข 75 สามารถแสดงเป็น 75 =50 + 10 + 10 + 5 ได้ ดังนั้นเลขโรมันจึงเป็น LXXV
ในปัญหานี้มีรูปแบบทศนิยมหนึ่งหมายเลข หน้าที่ของเราคือแปลงเป็นสตริงตัวเลขโรมัน
มีสัญลักษณ์และค่าต่างกันดังนี้
I | IV | V | IX | X | XL | L | XC | C | CD | D | CM | ม | MMMM | V’ |
1 | 4 | 5 | 9 | 10 | 40 | 50 | 90 | 100 | 400 | 500 | 900 | 1000 | 4000 | 5000 |
เมื่อใช้ตารางนี้ เราสามารถค้นหาเลขโรมันของตัวเลขที่ระบุได้อย่างง่ายดาย
อินพุตและเอาต์พุต
Input:Decimal number:3569Output:The Roman เทียบเท่ากับ 3569 คือ:MMMDLXIX
อัลกอริทึม
decToRoman(nuList, num)
ป้อนข้อมูล: รายการตัวเลขพร้อมค่า ตัวเลขที่จะแปลงเป็นโรมัน
ผลลัพธ์: เลขโรมันสำหรับตัวเลขที่กำหนด
เริ่มต้นถ้า num ≠ 0 แล้ว max :=รับค่าตัวเลขสูงสุด ไม่เกินจำนวนจะแสดง nuList[max].symbol num :=num – nuList[max].value decToRoman(nuList, num)Endก่อน>ตัวอย่าง
#includeใช้เนมสเปซ std;struct ตัวเลข { string sym; int val;};int maxNume (ตัวเลข nu [], int num) { ดัชนี int; for(int i =0; i<15; i++) //15 ตัวเลขในอาร์เรย์ if(nu[i].val<=num) index =i; //gretest ค่าดัชนีตัวเลข ไม่เกินดัชนีส่งคืนตัวเลข;} void decToRoman (ตัวเลข nu [], int num) { int max; ถ้า (num !=0) { max =maxNume (nu, num); ศาล < > หมายเลข; if(number>0 &&number <=5000) { //checking input number cout<<"เลขโรมันที่เทียบเท่ากับ " < ผลลัพธ์
ป้อนตัวเลขทศนิยม:3569ค่าเทียบเท่าโรมันของ 3569 คือ:MMMDLXIX