รับด้านล่างเป็นอัลกอริทึมในการแปลงเลขโรมันเป็นตัวเลขทศนิยมในภาษา C -
อัลกอริทึม
ขั้นตอนที่ 1 - เริ่ม
ขั้นตอนที่ 2 - อ่านเลขโรมันที่รันไทม์
ขั้นตอนที่ 3 − length:=strlen(roman)
ขั้นตอนที่ 4 - สำหรับ i =0 ถึงความยาว -1 ทำ
ขั้นตอนที่ 4.1 - สลับ (โรมัน[i])
ขั้นตอนที่ 4.1.1 - กรณี 'm':
ขั้นตอนที่ 4.1.2 - กรณี 'M':
ขั้นตอนที่ 4.1.2.1 - d[i]:=1000
ขั้นตอนที่ 4.1.3 - กรณี 'd':
ขั้นตอนที่ 4.1.4 - กรณี 'D':
ขั้นตอนที่ 4.1.4.1 – d[i]:=500
ขั้นตอนที่ 4.1.5 - กรณี 'c':
ขั้นตอนที่ 4.1.6 - กรณี 'C':
ขั้นตอนที่ 4.1.6.1 - d[i]:=100
ขั้นตอนที่ 4.1.7 - กรณี 'l':
ขั้นตอนที่ 4.1.8 - กรณี 'L':
ขั้นตอนที่ 4.1.8.1 – d[i]:=50
ขั้นตอนที่ 4.1.9 - กรณี 'x':
ขั้นตอนที่ 4.1.10 – กรณี ‘X’:
ขั้นตอนที่ 4.1.10.1 – d[i]:=10
ขั้นตอนที่ 4.1.11 - กรณี 'v':
ขั้นตอนที่ 4.1.12 - กรณี 'V':
ขั้นตอนที่ 4.1.12.1 − d[i]:=5
ขั้นตอนที่ 4.1.13 - กรณี 'i':
ขั้นตอนที่ 4.1.14 – กรณี ‘ฉัน’:
ขั้นตอนที่ 4.1.14.1 – d[i]:=1
ขั้นตอนที่ 5 - สำหรับ i =0 ถึงความยาว -1 ทำ
ขั้นตอนที่ 5.1 – ถ้า (i==length-1) หรือ (d[i]>=d[i+1]) แล้ว
ขั้นตอนที่ 5.1.1 − deci +=d[i]
ขั้นตอนที่ 5.2 – อย่างอื่น
ขั้นตอนที่ 5.2.1 − deci -=d[i]
ขั้นตอนที่ 6 - พิมพ์ทศนิยมเทียบเท่าเลขโรมัน
ขั้นตอนที่ 7 – หยุด
โปรแกรม
ต่อไปนี้เป็นโปรแกรม C เพื่อ แปลงเลขโรมันเป็นเลขฐานสิบ −
#include <stdio.h> #include <conio.h> main(){ char roman[30]; int deci=0; int length,i,d[30]; printf("The Roman equivalent to decimal\n"); printf("Decimal:.........Roman\n"); printf("%5d............%3c\n",1,'I'); printf("%5d............%3c\n",5,'V'); printf("%5d............%3c\n",10,'X'); printf("%5d............%3c\n",50,'L'); printf("%5d............%3c\n",100,'C'); printf("%5d............%3c\n",500,'D'); printf("%5d............%3c\n",1000,'M'); printf("Enter a Roman numeral:"); scanf("%s",roman); length=strlen(roman); for(i=0;i<length;i++){ switch(roman[i]){ case 'm': case 'M': d[i]=1000; break; case 'd': case 'D': d[i]= 500; break; case 'c': case 'C': d[i]= 100; break; case 'l': case 'L': d[i]= 50; break; case 'x': case 'X': d[i]= 10; break;; case 'v': case 'V': d[i]= 5; break; case 'i': case 'I': d[i]= 1; } } for(i=0;i<length;i++){ if(i==length-1 || d[i]>=d[i+1]) deci += d[i]; else deci -= d[i]; } printf("The Decimal equivalent of Roman numeral %s is %d", roman, deci); }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
The Roman equivalent to decimal Decimal:.........Roman 1............ I 5............ V 10............ X 50............ L 100............ C 500............ D 1000............ M Enter a Roman numeral: M The Decimal equivalent of Roman Numeral M is 1000