Cara Mengkonversi Angka Romawi Ke Angka Arab

Sistem penomoran yang sering dipakai adalah sistem penomoran angka arab. Angka arab terdiri dari sembilan angka yaitu 0,1,2,3,4,5,6,7,8,9. Selain sistem penomoran arab ada sistem penomoran lain yang juga sering dipakai, yaitu sistem romawi. Sistem penomoran romawi menggunakan 7 simbol yang bisa dikombinasikan untuk merepresentasikan angka 1 s.d. 1.000.000. Sismbol-simbol dalam sistem romawi yaitu : I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000.

Contoh : 1973 (Arab) sama dengan MCMLXXIII (Romawi).


Pada artikel berikut ini akan diberikan cara untuk mengkonversi angka romawi kedalam sistem arab. Berikut ini source code nya :

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;
Catatan : fungsi RomanToArabic akan mengembalikan nilai -1 jika parameter "romanNumber" bukan angka dalam format romawi (contoh "MIXKIX" adalah bukan angka romawi).
Source : delphi.about.com

0 comments:

Post a Comment