Senin, 26 Desember 2011

membuat angka terbilang dalam bahasa pascal

beberapa hari yg lalu saya dapet pertanyaan...

pada kwitansi sering kan kita liat angka dam terbilang, contoh
Rp.125.000
terbilang : seratus dua puluh lima ribu rupiah

nah yg jadi pertanyaan gimana mengkonversi angka menjadi terbilang dengan bahasa pascal.. pertanyaan ini bikin penasaran, setelah beberapa jam saya coba... akhirnya jadi deh... sebetulnya codingnya bisa lebih "sedikit" dg menggunakan sintak2 khusus, tp sengaja saya buat dengan sintak sederhana (if dan case) dengan tujuan AGAR logika pembuatanya mudah di baca, so... enjoy it guys


program membaca_angka;

uses
crt;

var
bilangan,juta,RatusRibu,PuluhRibu : longint;
Ribu,Ratus,Puluh,Satuan : integer;

begin
clrscr;


write('tulis angka ');readln(bilangan);

juta := bilangan;

case juta of
0..999999 : begin
write;
RatusRibu := juta;
end;

1000000..1999999 : begin
write('satu juta');
RatusRibu := juta - 1000000;
end;

2000000..2999999 : begin
write('dua juta');
RatusRibu := juta - 2000000;
end;

3000000..3999999 : begin
write('tiga juta');
RatusRibu := juta - 3000000;
end;

4000000..4999999 : begin
write('empat juta');
RatusRibu := juta - 4000000;
end;

5000000..5999999 : begin
write('lima juta');
RatusRibu := juta - 5000000;
end;

6000000..6999999 : begin
write('enam juta');
RatusRibu := juta - 6000000;
end;

7000000..7999999 : begin
write('tujuh juta');
RatusRibu := juta - 7000000;
end;

8000000..8999999 : begin
write('delapan juta');
RatusRibu := juta - 8000000;
end;

9000000..9999999 : begin
write('sembilan juta');
RatusRibu := juta - 9000000;
end;
otherwise write('Makanan apaan yg lbh dr 10jt???');

end;

case RatusRibu of
0..99999 : begin
write;
PuluhRibu := RatusRibu;
end;

100000..199999 : begin
PuluhRibu := RatusRibu - 100000;

if RatusRibu - 100000 > 999 then
write('seratus':8)
else write('seratus ribu':13);

PuluhRibu := RatusRibu - 100000;
end;

200000..299999 : begin
PuluhRibu := RatusRibu - 200000;

if RatusRibu - 200000 > 999 then
write('dua ratus':10)
else write('dua ratus ribu':15);

PuluhRibu := RatusRibu - 200000;
end;

300000..399999 : begin
PuluhRibu := RatusRibu - 300000;

if RatusRibu - 300000 > 999 then
write('tiga ratus':11)
else write('tiga ratus ribu':16);

PuluhRibu := RatusRibu - 300000;
end;

400000..499999 : begin
PuluhRibu := RatusRibu - 400000;

if RatusRibu - 400000 > 999 then
write('empat ratus':12)
else write('empat ratus ribu':18);

PuluhRibu := RatusRibu - 400000;
end;

500000..599999 : begin
PuluhRibu := RatusRibu - 500000;

if RatusRibu - 500000 > 999 then
write('lima ratus':11)
else write('lima ratus ribu':16);

PuluhRibu := RatusRibu - 500000;
end;

600000..699999 : begin
PuluhRibu := RatusRibu - 600000;

if RatusRibu - 600000 > 999 then
write('enam ratus':11)
else write('enam ratus ribu':16);

PuluhRibu := RatusRibu - 600000;
end;

700000..799999 : begin
PuluhRibu := RatusRibu - 700000;

if RatusRibu - 700000 > 999 then
write('tujuh ratus':12)
else write('tujuh ratus ribu':17);

PuluhRibu := RatusRibu - 700000;
end;

800000..899999 : begin
PuluhRibu := RatusRibu - 800000;

if RatusRibu - 800000 > 999 then
write('delapan ratus':14)
else write('delapan ratus ribu':19);

PuluhRibu := RatusRibu - 800000;
end;

900000..999999 : begin
PuluhRibu := RatusRibu - 900000;

if RatusRibu - 900000 > 999 then
write('sembilan ratus':15)
else write('sembilan ratus ribu':20);

PuluhRibu := RatusRibu - 900000;
end;
end;

case PuluhRibu of
0..9999 : begin
write;
Ribu := PuluhRibu;
end;

10000..10999 : begin
Ribu := PuluhRibu - 10000;
write('sepuluh ribu':13);
end;

11000..11999 : begin
Ribu := PuluhRibu - 11000;
write('sebelas ribu':13);
end;

12000..12999 : begin
Ribu := PuluhRibu - 12000;
write('dua belas ribu':14);
end;

13000..13999 : begin
Ribu := PuluhRibu - 13000;
write('tiga belas ribu':15);
end;

14000..14999 : begin
Ribu := PuluhRibu - 14000;
write('empat belas ribu':16);
end;

15000..15999 : begin
Ribu := PuluhRibu - 15000;
write('lima belas ribu':15);
end;

16000..16999 : begin
Ribu := PuluhRibu - 16000;
write('enam belas ribu':15);
end;

17000..17999 : begin
Ribu := PuluhRibu - 17000;
write('tujuh belas ribu':16);
end;

18000..18999 : begin
Ribu := PuluhRibu - 18000;
write('delapan belas ribu':18);
end;

19000..19999 : begin
Ribu := PuluhRibu - 19000;
write('sembilan belas ribu':19);
end;

20000..29999 : begin
Ribu := PuluhRibu - 20000;

if PuluhRibu - 20000 > 999 then
write('dua puluh':10)
else write('dua puluh ribu':15);

end;


30000..39999 : begin
Ribu := PuluhRibu - 30000;

if PuluhRibu - 30000 > 999 then
write('tiga puluh':11)
else write('tiga puluh ribu':16);

end;
40000..49999 : begin
Ribu := PuluhRibu - 40000;

if PuluhRibu - 40000 > 999 then
write('empat puluh':12)
else write('empat puluh ribu':17);

end;

50000..59999 : begin
Ribu := PuluhRibu - 50000;

if PuluhRibu - 50000 > 999 then
write('lima puluh':11)
else write('lima puluh ribu':16);

end;

60000..69999 : begin
Ribu := PuluhRibu - 60000;

if PuluhRibu - 60000 > 999 then
write('enam puluh':11)
else write('enam puluh ribu':16);

end;
70000..79999 : begin
Ribu := PuluhRibu - 70000;

if PuluhRibu - 70000 > 999 then
write('tujuh puluh':12)
else write('tujuh puluh ribu':17);

end;

80000..89999 : begin
Ribu := PuluhRibu - 80000;

if PuluhRibu - 80000 > 999 then
write('delapan puluh':14)
else write('delapan puluh ribu':19);

end;

90000..99999 : begin
Ribu := PuluhRibu - 90000;

if PuluhRibu - 90000 > 999 then
write('sembilan puluh':15)
else write('sembilan puluh ribu':20);

end;
end;

case Ribu of
0..999 : begin
write;
Ratus := Ribu;
end;

1000..1999 : begin
write('satu ribu':10);
Ratus := Ribu - 1000;
end;

2000..2999 : begin
write('dua ribu':9);
Ratus := Ribu - 2000;
end;

3000..3999 : begin
write('tiga ribu':10);
Ratus := Ribu - 3000;
end;

4000..4999 : begin
write('empat ribu':11);
Ratus := Ribu - 4000;
end;

5000..5999 : begin
write('lima ribu':10);
Ratus := Ribu - 5000;
end;

6000..6999 : begin
write('enam ribu':10);
Ratus := Ribu - 6000;
end;

7000..7999 : begin
write('tujuh ribu':11);
Ratus := Ribu - 7000;
end;

8000..8999 : begin
write('delapan ribu':13);
Ratus := Ribu - 8000;
end;

9000..9999 : begin
write('sembilan ribu':14);
Ratus := Ribu - 9000;
end;
end;

case Ratus of
0..99 : begin
write;
Puluh := Ratus;
end;

100..199 : begin
write('seratus':8);
Puluh := Ratus - 100;
end;

200..299 : begin
write('dua ratus':10);
Puluh := Ratus - 200;
end;

300..399 : begin
write('tiga ratus':11);
Puluh := Ratus - 300;
end;

400..499 : begin
write('empat ratus':12);
Puluh := Ratus - 400;
end;

500..599 : begin
write('lima ratus':11);
Puluh := Ratus - 500;
end;

600..699 : begin
write('enam ratus':11);
Puluh := Ratus - 600;
end;

700..799 : begin
write('tujuh ratus':12);
Puluh := Ratus - 700;
end;

800..899 : begin
write('delapan ratus':14);
Puluh := Ratus - 800;
end;

900..999 : begin
write('sembilan ratus':15);
Puluh := Ratus - 900;
end;
end;

case Puluh of
0..9 : begin
write;
Satuan := Puluh;
end;

10 : write('sepuluh':8);

11 : write('sebelas':8);

12 : write('dua belas':10);

13 : write('tiga belas':11);

14 : write('empat belas':12);

15 : write('lima belas':11);

16 : write('enam belas':11);

17 : write('tujuh belas':12);

18 : write('delapan belas':14);

19 : write('sembilan belas':15);

20..29 : begin
write('dua puluh':10);
Satuan := Puluh - 20;
end;

30..39 : begin
write('tiga puluh':11);
Satuan := Puluh - 30;
end;

40..49 : begin
write('empat puluh':12);
Satuan := Puluh - 40;
end;

50..59 : begin
write('lima puluh':11);
Satuan := Puluh - 50;
end;

60..69 : begin
write('enam puluh':11);
Satuan := Puluh - 60;
end;

70..79 : begin
write('tujuh puluh':12);
Satuan := Puluh - 70;
end;

80..89 : begin
write('delapan puluh':14);
Satuan := Puluh - 80;
end;

90..99 : begin
write('sembilan puluh':15);
Satuan := Puluh - 90;
end;
end;

case Satuan of
0 : write('rupiah':7);

1 : write('satu rupiah':12);

2 : write('dua rupiah':11);

3 : write('tiga rupiah':12);

4 : write('empat rupiah':13);

5 : write('lima rupiah':12);

6 : write('enam rupiah':12);

7 : write('tujuh rupiah':13);

8 : write('delapan rupiah':15);

9 : write('sembilan rupiah':16);
end;
readln;
end.

1 komentar: