1: public class RomanNumerals
2: {
3: private class Denomination
4: {
5: public int Value { get; set; }
6: public string Symbol { get; set; }
7: }
8:
9: private static readonly Denomination[] table =
10: {
11: new Denomination { Value = 1000, Symbol = "M" },
12: new Denomination { Value = 900, Symbol = "CM" },
13: new Denomination { Value = 500, Symbol = "D" },
14: new Denomination { Value = 400, Symbol = "CD" },
15: new Denomination { Value = 100, Symbol = "C" },
16: new Denomination { Value = 90, Symbol = "XC" },
17: new Denomination { Value = 50, Symbol = "L" },
18: new Denomination { Value = 40, Symbol = "XL" },
19: new Denomination { Value = 10, Symbol = "X" },
20: new Denomination { Value = 9, Symbol = "IX" },
21: new Denomination { Value = 5, Symbol = "V" },
22: new Denomination { Value = 4, Symbol = "IV" },
23: new Denomination { Value = 1, Symbol = "I" }
24: };
25:
26: public static string Translate(int number)
27: {
28: var result = new StringBuilder();
29:
30: int remainder = number;
31:
32: foreach (var current in table)
33: {
34: while (remainder >= current.Value)
35: {
36: result.Append(current.Symbol);
37: remainder -= current.Value;
38: }
39: }
40:
41: return result.ToString();
42: }
43: }