2017-06-08 16 views
-1

方法のasp.net C#で加算、減算、乗算、除算などのローマ数字に数学的操作を実行するにはどのようにローマ数字の上に数学的な操作を実行するには

+4

ローマ数字を数値に変換し、操作を実行し、出力をローマ数字に変換します。タダ!!! – Rajesh

+0

私は何かを試してみました。数字を入力することができ、それは私にその整数からローマ数字への変換を与えるでしょう、どのように動作するべきかを示すサンプルプログラムがありますか? – vineeta

答えて

-1

ステップ1:数値番号にあなたのローマ数字に変換します。

以下は、ローマンから数字に変換する例です。

private enum RomanDigit 
{ 
    I = 1, 
    V = 5, 
    X = 10, 
    L = 50, 
    C = 100, 
    D = 500, 
    M = 1000 
} 

public static int RomanToNumbers(string roman) 
{ 
    roman = roman.ToUpper().Trim(); 
    if (roman == "N") return 0; 

    int ptr = 0; 
    ArrayList values = new ArrayList(); 
    int maxDigit = 1000; 
    while (ptr < roman.Length) 
    { 
     char numeral = roman[ptr]; 
     int digit = (int)Enum.Parse(typeof(RomanDigit), numeral.ToString()); 

     int nextDigit = 0; 
     if (ptr < roman.Length - 1) 
     { 
      char nextNumeral = roman[ptr + 1]; 
      nextDigit = (int)Enum.Parse(typeof(RomanDigit), nextNumeral.ToString()); 

      if (nextDigit > digit) 
      { 
       maxDigit = digit - 1; 
       digit = nextDigit - digit; 
       ptr++; 
      } 
     } 

     values.Add(digit); 
     ptr++; 
    } 

    int total = 0; 
    foreach (int digit in values) 
     total += digit; 

    return total; 
} 

手順2:次のコードを使用して上記の方法から値を取得します。

string data1 = "CDXIX"; 
string data2 = "CCXXII"; 
int value1 = RomanToNumbers(data1); //returns 419 
int value2 = RomanToNumbers(data2); //returns 222 

ステップ3:今など、合計のようなあなたの操作を実行し減算、乗算や除算または

int result = value1 + value2; //641 

ステップ4:ローマ

public static string ToRoman(int number) 
{ 
    if ((number < 0) || (number > 3999)) throw new ArgumentOutOfRangeException("insert value betwheen 1 and 3999"); 
    if (number < 1) return string.Empty;    
    if (number >= 1000) return "M" + ToRoman(number - 1000); 
    if (number >= 900) return "CM" + ToRoman(number - 900); //EDIT: i've typed 400 instead 900 
    if (number >= 500) return "D" + ToRoman(number - 500); 
    if (number >= 400) return "CD" + ToRoman(number - 400); 
    if (number >= 100) return "C" + ToRoman(number - 100);    
    if (number >= 90) return "XC" + ToRoman(number - 90); 
    if (number >= 50) return "L" + ToRoman(number - 50); 
    if (number >= 40) return "XL" + ToRoman(number - 40); 
    if (number >= 10) return "X" + ToRoman(number - 10); 
    if (number >= 9) return "IX" + ToRoman(number - 9); 
    if (number >= 5) return "V" + ToRoman(number - 5); 
    if (number >= 4) return "IV" + ToRoman(number - 4); 
    if (number >= 1) return "I" + ToRoman(number - 1); 
    throw new ArgumentOutOfRangeException("something bad happened"); 
} 
に数値から変換するには、次のメソッドを使用します

ステップ5:今度は結果として数値からローマ字に変換しなおす

string output = ToRoman(result); //your output "DCXLI" 
+0

。 'if..else'と' if'ラダーを使うのが良いでしょう。 – Rajesh

+0

@Rajesh私はあなたに同意します。しかしいつもではない。 –

+0

ありがとうございましたNaveenは時間を与えてくれました。このプログラムを実行しようとしましたが、いくつかのエラーが出ています。 – vineeta

関連する問題