Menulis Angka Romawi dengan Visual Foxpro
&& FUNCTION Lat2Rom && Max 999999
&& Mengubah bilangan bulat positif menjadi angka Romawi
&& PARAMETERS _nLat ; Bilangan bulat positif
&& Contoh :
&& Lat2Rom(2) ===> "II"
&& Lat2Rom("2") ===> "II"
&& Lat2Rom(0) ===> ""
FUNCTION Lat2Rom
PARAMETERS _nLat
IF VARTYPE(_nLat)="C"
_nLat=INT(VAL(_nLat))
ENDIF
IF _nLat<=0 && Tak ada angka Romawi NOL atau Negaatif
RETURN ""
ENDIF
IF _nLat>999999 && Sebagai pembatas Bilbul Pos yang akan diromawikan
RETURN ""
ENDIF
_Balik=""
_nSisa=_nLat
DO WHILE _nSisa>0
DO CASE
CASE _nSisa>=1000
_Jum1000=INT(_nSisa/1000)
_nSisa=_nSisa-_Jum1000*1000
_Balik=_Balik+REPLICATE("M",_Jum1000)
CASE _nSisa>=900
_Balik=_Balik+"CM"
_nSisa=_nSisa-900
CASE _nSisa>=800
_Balik=_Balik+"DCCC"
_nSisa=_nSisa-800
CASE _nSisa>=700
_Balik=_Balik+"DCC"
_nSisa=_nSisa-700
CASE _nSisa>=600
_Balik=_Balik+"DC"
_nSisa=_nSisa-600
CASE _nSisa>=500
_Balik=_Balik+"D"
_nSisa=_nSisa-500
CASE _nSisa>=400
_Balik=_Balik+"CD"
_nSisa=_nSisa-400
CASE _nSisa>=300
_Balik=_Balik+"CCC"
_nSisa=_nSisa-300
CASE _nSisa>=200
_Balik=_Balik+"CC"
_nSisa=_nSisa-200
CASE _nSisa>=100
_Balik=_Balik+"C"
_nSisa=_nSisa-100
CASE _nSisa>=90
_Balik=_Balik+"XC"
_nSisa=_nSisa-90
CASE _nSisa>=80
_Balik=_Balik+"LXXX"
_nSisa=_nSisa-80
CASE _nSisa>=70
_Balik=_Balik+"LXX"
_nSisa=_nSisa-70
CASE _nSisa>=60
_Balik=_Balik+"LX"
_nSisa=_nSisa-60
CASE _nSisa>=50
_Balik=_Balik+"L"
_nSisa=_nSisa-50
CASE _nSisa>=40
_Balik=_Balik+"XL"
_nSisa=_nSisa-40
CASE _nSisa>=30
_Balik=_Balik+"XXX"
_nSisa=_nSisa-30
CASE _nSisa>=20
_Balik=_Balik+"XX"
_nSisa=_nSisa-20
CASE _nSisa>=10
_Balik=_Balik+"X"
_nSisa=_nSisa-10
OTHERWISE
DO CASE
CASE _nSisa=9
_Balik=_Balik+"IX"
_nSisa=0
CASE _nSisa=8
_Balik=_Balik+"VIII"
_nSisa=0
CASE _nSisa=7
_Balik=_Balik+"VII"
_nSisa=0
CASE _nSisa=6
_Balik=_Balik+"VI"
_nSisa=0
CASE _nSisa=5
_Balik=_Balik+"V"
_nSisa=0
CASE _nSisa=4
_Balik=_Balik+"IV"
_nSisa=0
CASE _nSisa=3
_Balik=_Balik+"III"
_nSisa=0
CASE _nSisa=2
_Balik=_Balik+"II"
_nSisa=0
CASE _nSisa=1
_Balik=_Balik+"I"
_nSisa=0
ENDCASE
ENDCASE
ENDDO
RETURN _Balik
0 komentar:
Posting Komentar