BTemplates.com

Diberdayakan oleh Blogger.

Pages

Pages - Menu

Popular Posts

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

0 komentar:

Posting Komentar