Rabu, 03 Juni 2009

Fungsi Terbilang

Sering sekali dalam pembuatan program, terutama program berhaluan bisnis, program harus melafalkan nilai nominal uang dalam bentuk kata – kata.

untuk itu, postingan kali ini saya coba untuk menuliskan sebuah fungsi terbilang yang akan mengubah nilai nominal uang menjadi kata – kata.

berikut ini fungsinya, (ditulis dengan menggunakan C++, dengan teknik rekursif):

void terbilang(long n, char *str) {
    if(n < 10)
        strcat(str, kata[n]);
    else if(n >= 1000000000) {
        terbilang(n / 1000000000, str);
        strcat(str, " milyar ");
        terbilang(n % 1000000000, str);
    }
    else if(n >= 1000000) {
        terbilang(n / 1000000, str);
        strcat(str, " juta ");
        terbilang(n % 1000000, str);
    }
    else if(n >= 1000) {
        if(n / 1000 == 1) {
            strcat(str, "seribu ");
            terbilang(n % 1000, str);
        }
        else {
            terbilang(n / 1000, str);
            strcat(str, " ribu ");
            terbilang(n % 1000, str);
        }
    }
    else if(n >= 100) {
        if(n / 100 == 1) {
            strcat(str, "seratus ");
            terbilang(n % 100, str);
        }
        else {
            terbilang(n / 100, str);
            strcat(str, " ratus ");
            terbilang(n % 100, str);
        }
    }
    else if(n >= 10) {
        if(n == 10)
            strcat(str, "sepuluh");
        else if(n == 11)
            strcat(str, "sebelas");
        else if(n >= 20) {
            terbilang(n / 10, str);
            strcat(str, " puluh ");
            terbilang(n % 10, str);
        }
        else {
            terbilang(n % 10, str);
            strcat(str, " belas");
        }
    }

silahkan bertanya jika ada yang tidak dipahami.

Rgds
Adi

4 komentar:

SEMADI mengatakan...

cuma sampai miliar y pak ?
sampai trilyun bisa gk pak ?

ADI mengatakan...

tinggal ditingkatkan aj. tambahkan lagi 3 nol.

and it's done.

Unknown mengatakan...

apa beda var *str dengan var biasa str, sir?

Anandika Paradisa mengatakan...

permisi pak,..mau tanya,...

maksud dari
"ditulis dengan teknik rekursif"
itu apa y?

lalu maksud dari "terbilang" itu "pritnf"
tp apa maksud dari "strcat" ?
terima kasih