Dưới đây là một thuật toán để chuyển đổi số la mã sang số thập phân trong ngôn ngữ C -
Thuật toán
Bước 1 - Bắt đầu
Bước 2 - Đọc số la mã trong thời gian chạy
Bước 3 - length:=strlen (roman)
Bước 4 - for i =0 to length-1 do
Bước 4.1 - chuyển đổi (roman [i])
Bước 4.1.1 - trường hợp ‘m’:
Bước 4.1.2 - trường hợp ‘M’:
Bước 4.1.2.1 - d [i]:=1000
Bước 4.1.3 - trường hợp ‘d’:
Bước 4.1.4 - trường hợp ‘D’:
Bước 4.1.4.1 - d [i]:=500
Bước 4.1.5 - trường hợp ‘c’:
Bước 4.1.6 - trường hợp ‘C’:
Bước 4.1.6.1 - d [i]:=100
Bước 4.1.7 - trường hợp ‘l’:
Bước 4.1.8 - trường hợp ‘L’:
Bước 4.1.8.1 - d [i]:=50
Bước 4.1.9 - trường hợp ‘x’:
Bước 4.1.10 - trường hợp ‘X’:
Bước 4.1.10.1 - d [i]:=10
Bước 4.1.11 - trường hợp ‘v’:
Bước 4.1.12 - trường hợp ‘V’:
Bước 4.1.12.1 - d [i]:=5
Bước 4.1.13 - trường hợp ‘i’:
Bước 4.1.14 - trường hợp ‘I’:
Bước 4.1.14.1 - d [i]:=1
Bước 5 - for i =0 to length-1 do
Bước 5.1 - if (i ==length-1) or (d [i]> =d [i + 1]) then
Bước 5.1.1 - deci + =d [i]
Bước 5.2 - khác
Bước 5.2.1 - deci - =d [i]
Bước 6 - In số thập phân tương đương với số la mã
Bước 7 - Dừng lại
Chương trình
Sau đây là chương trình C để chuyển đổi số la mã sang số thập phân -
#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); }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
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