Напишите функцию, которая заменяет во всей строке все римские числа на соответствующие десятичные числа - PascalABC.NET
Формулировка задачи:
Пример:
Введите строку:
В MMXIII году в школе CXXIII состоялся очередной выпуск XI классов.
Результат:
В 2013 году в школе 123 состоялся очередной выпуск 10-х классов.
Решение задачи: «Напишите функцию, которая заменяет во всей строке все римские числа на соответствующие десятичные числа»
textual
Листинг программы
// ... var s : string := 'В MMXIII году в школе CXXIII состоялся очередной выпуск XI классов.'; begin s := Regex.Replace(s, '(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})', (m : System.Text.RegularExpressions.Match) -> Rim2Arab(m.Value).ToString()); writeln(s); end.
Объяснение кода листинга программы
- В строке
В MMXIII году в школе CXXIII состоялся очередной выпуск XI классов.
нужно заменить все римские числа на десятичные. - Для этого используется метод Regex.Replace, который ищет все совпадения с заданным регулярным выражением и заменяет их на результат вызова функции Rim2Arab, преобразовывающей римское число в десятичное.
- Регулярное выражение '(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})' ищет все возможные варианты римских чисел.
M
означает, что перед числом обязательно стоитM
.C[MD]
означает, что первая позиция может быть заполненаC
илиM
, а вторая позиция может быть заполненаD
.D?C{0,3}
означает, что вторая позиция может быть заполненаD
, а третья, четвертая и пятая позиции могут быть заполненыC
(но их может и не быть).X[CL]
означает, что первая позиция может быть заполненаX
, а вторая позиция может быть заполненаL
.L?X{0,3}
означает, что вторая позиция может быть заполненаL
, а третья, четвертая и пятая позиции могут быть заполненыX
(но их может и не быть).I[XV]
означает, что первая позиция может быть заполненаI
, а вторая позиция может быть заполненаV
илиX
.V?I{0,3}
означает, что вторая позиция может быть заполненаV
, а третья, четвертая и пятая позиции могут быть заполненыI
(но их может и не быть).- Функция Rim2Arab преобразовывает римское число в десятичное.
- Результат преобразования (десятичное число) заменяет найденное римское число в исходной строке.
- Результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д