Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

ローマ数字を10進数に変換するCプログラム


以下に示すのは、C言語でローマ数字を10進数に変換するアルゴリズムです-

アルゴリズム

ステップ1-開始

ステップ2-実行時にローマ数字を読む

ステップ3-長さ:=strlen(roman)

ステップ4− for i =0 to length-1 do

ステップ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-ケース「I」:

ステップ4.1.14.1− d [i]:=1

ステップ5-fori =0 to length-1 do

ステップ5.1-if(i ==length-1)or(d [i]> =d [i + 1])then

ステップ5.1.1− deci + =d [i]

ステップ5.2-else

ステップ5.2.1− deci-=d [i]

ステップ6-ローマ数字に相当する10進数を印刷する

ステップ7-停止

プログラム

以下は、ローマ数字を10進数に変換する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

  1. 16進文字列を10進数に変換するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 16進文字列が与えられたので、それを10進数に変換する必要があります。 問題を解決するための2つのアプローチがあります- ブルートフォースアプローチ 組み込みモジュールの使用 ブルートフォース方式 ここでは、明示的な型キャスト関数、つまり整数を利用します。この関数は、2つの引数、つまり16進数と同等の引数とベース(16)を取ります。この関数は、16進文字列を整数型の同等の10進数に変換するために使用されます。これは、さらに文字列形式に型キャストして戻すことができます。 例 #input strin

  2. Pythonプログラムで10進数を2進数に変換する

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 10進数が与えられているので、それに相当する2進数に変換する必要があります。 与えられた問題を解決するための2つのアプローチがあります。それらを1つずつ見てみましょう- 再帰的アプローチ 例 def DecimalToBinary(num):    if num > 1:       DecimalToBinary(num // 2)    print(num % 2, end = '') # main if _