Внешний вид сайта:

Как преобразовать римские цифры в арабские

Системы исчисления, которые сегодня используются, в большинстве своем являются арабской системой исчисления. Десять однозначных цифр 0 до 9, составляют символы нашей числовой системы. Примером другой системе счисления является система римских цифр, которые могут представлять все числа от 1 до 1000000, используя только семь символов: I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000. Пример: 1973 (арабская) это MCMLXXIII (римская).

Delphi MMIIX

Преобразовать 2009 в MMIX легко.

Как конвертировать римские числа в их арабское представление?

Вот функции Delphi, которая выполняет эту работу:

function RomanToArabic(
         const romanNumber : string) : integer ;
 const
   romanChars = 'IVXLCDMvxlcdm?!#' ;
   decades : array [0..8] of integer = (
         0, 1, 10, 100, 1000, 10000, 100000, 
         1000000, 10000000) ;
   OneFive : array [boolean] of byte = (1, 5) ;
 var
   newValue, oldValue : integer ;
   cIdx, P : byte ;
 begin
   result := 0;
   oldValue := 0 ;
   for cIdx := Length(romanNumber) downto 1 do
   begin
     P := Succ(Pos(romanNumber[cIdx], romanChars)) ;
     newValue := OneFive[Odd(P)] * decades[P div 2] ;
     if newValue = 0 then
     begin
       result := -1;
       Exit;
     end ;
     if newValue < oldValue then newValue := - newValue ;
     Inc(result, newValue) ;
     oldValue := newValue
   end ;
 end;

Примечание: RomanToArabic вернет -1, если параметр romanNumber написан не латинскими буквами (например, MIXKIX не является римской цифра).

Комментарии

Нет комментариев. Ваш будет первым!