Mega Code Archive

 
Categories / Delphi / System
 

Roma rakamlarini sayiya - sayilari roma rakamlarina cevirme

// // Asagidaki fonksiyonlari programinizda uygun yerlere ekleyiniz. // Function IntToRoman(Sayi : Integer) : String; Var Sonuc : String; Begin Sonuc := ''; If (Sayi>0) And (Sayi<4000) Then Begin Sonuc:=Copy('MMM',1,Sayi Div 1000); Sayi:=Sayi Mod 1000; If Sayi>=900 Then Begin Sonuc:=Sonuc+'CM'; Sayi:=Sayi-900; End Else Begin If Sayi>=500 Then Begin Sonuc:=Sonuc+'D'; Sayi:=Sayi-500; End Else If Sayi>=400 Then Begin Sonuc:=Sonuc+'CD'; Sayi:=Sayi-400; End; Sonuc:=Sonuc+Copy('CCC',1,Sayi Div 100); Sayi:=Sayi Mod 100; End; If Sayi>=90 Then Begin Sonuc:=Sonuc+'XC'; Sayi:=Sayi-90; End Else Begin If Sayi>=50 Then Begin Sonuc:=Sonuc+'L'; Sayi:=Sayi-50; End Else If Sayi>=40 Then Begin Sonuc:=Sonuc+'XL'; Sayi:=Sayi-40; End; Sonuc:=Sonuc+Copy('XXX',1,Sayi Div 10); Sayi:=Sayi Mod 10; End; If Sayi=9 Then Sonuc:=Sonuc+'IX' Else Begin If Sayi>=5 Then Begin Sonuc:=Sonuc+'V'; Sayi:=Sayi-5; End Else If Sayi=4 Then Begin Sonuc:=Sonuc+'IV'; Sayi:=Sayi-4; End; Sonuc:=Sonuc+Copy('III',1,Sayi); End; End; Result:=Sonuc; End; Function RomanToInt(Roman : String) : Integer; Function HarfKac(Harf : Char) : Integer; Begin Case Harf Of 'I' : Result:=1; 'V' : Result:=5; 'X' : Result:=10; 'L' : Result:=50; 'C' : Result:=100; 'D' : Result:=500; 'M' : Result:=1000; Else Result:=-1; End; End; Function Besler(Harf : Char) : Boolean; Begin Result:=Harf In ['V','L','D']; End; Var Hane : Byte; Sayi,Deger : Integer; Kalan : Integer; Begin Hane:=Length(Roman); Sayi:=0; Kalan:=HarfKac(Roman[Hane]); While Hane>0 Do Begin Deger:=HarfKac(Roman[Hane]); If Deger<0 Then Begin RomantoInt := -1; Exit; End; If Deger>=Kalan Then Begin Inc(Sayi,Deger); Kalan:=Deger; End Else Begin If Besler(Roman[Hane]) Then Begin Result:=-1; Exit; End; If Kalan Div Deger>10 Then Begin Result:=-1; Exit; End; Dec(Sayi,Deger); End; Dec(Hane); End; Result:=Sayi; End; // // Kolay gelsin. // // Hakan HAMURCU // // hamurcu@delphiturk.com //