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