Computer >> Máy Tính >  >> Lập trình >> lập trình C

Chương trình C để chuyển đổi số la mã sang số thập phân

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