Преобразовать римское число в целое - C#

Узнай цену своей работы

Формулировка задачи:

Вводится строка. Если она является записью римского числа, то преобразовать ее в целое число.

Решение задачи: «Преобразовать римское число в целое»

textual
Листинг программы
   class Program
    {
        private static Dictionary<char, int> _romanMap = new Dictionary<char, int>
           {
                {'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}
           };
 
        public static int ConvertRomanToNumber(string text)
        {
            int totalValue = 0, prevValue = 0;
            foreach (var c in text)
            {
                if (!_romanMap.ContainsKey(c))
                    return 0;
                var crtValue = _romanMap[c];
                totalValue += crtValue;
                if (prevValue != 0 && prevValue < crtValue)
                {
                    if (prevValue == 1 && (crtValue == 5 || crtValue == 10)
                        || prevValue == 10 && (crtValue == 50 || crtValue == 100)
                        || prevValue == 100 && (crtValue == 500 || crtValue == 1000))
                        totalValue -= 2 * prevValue;
                    else
                        return 0;
                }
                prevValue = crtValue;
            }
            return totalValue;
        }
        static void Main(string[] args)
        {
            string rim = "L";
            int num = ConvertRomanToNumber(rim);
            Console.WriteLine("Римская цифра {0} = {1} ", rim, num);
            Console.ReadKey();
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы