Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

로마 숫자를 십진수로 변환하는 C 프로그램

<시간/>

다음은 C 언어에서 로마 숫자를 10진수로 변환하는 알고리즘입니다 -

알고리즘

1단계 - 시작

2단계 - 런타임에 로마 숫자 읽기

3단계 - 길이:=strlen(roman)

4단계 - i =0에서 length-1까지

4.1단계 - switch(roman[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 - if (i==length-1) 또는 (d[i]>=d[i+1]) then

5.1.1 단계 − 데시 +=d[i]

5.2단계 - 그렇지 않은 경우

5.2.1 단계 - deci -=d[i]

6단계 - 로마 숫자에 해당하는 10진수 인쇄

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