BTemplates.com

Diberdayakan oleh Blogger.

Pages

Pages - Menu

Popular Posts

Tampilkan postingan dengan label Menulis Angka Romawi. Tampilkan semua postingan
Tampilkan postingan dengan label Menulis Angka Romawi. Tampilkan semua postingan

Selasa, 30 Oktober 2007

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