Hmmm.. MOD dan DIV, ya? mungkin simple nya, mod bwat nyari sisa pembagian tertentu, div mencari 'bagian' integer dari hasil pembagiannya.
jadi misal pada operasi terhadap bilangan 5 dan 2, maka :
5 mod 2 = 1 (5:2 = 2 bersisa 1)
sedangkan
5 div 2 = 2 (5:2 = 2 bersisa 1)
atau mungkin bisa 'disamakan' dengan fungsi int(), umumnya digunakan pada pembulatan ke bawah bilangan real, misal : int(2,5) = 2.
Jadi untuk permasalahan di atas... mungkin bisa dicoba :
- masukkan pecahan yang akan di gunakan ke dalam sebuah array, misal :
cacah : array [0..10] of real = (25,50,100,200,500,1000,5000,10000,20000,50000,100000);
- masukkan total uang yang akan dipecah, misal menggunakan variabel total,
- perulangan dari 10 turun ke 0, lakukan :
-- cek hasil bagi total dengan cacah uang yang diinginkan apakah lebih besar dari 0,
--- tuliskan integer hasil bagi tersebut untuk cacah uang yang diperiksa,
--- total diupdate dengan nilai total dibagi dengan cacah yang diinginkan
- sisa akhir adalah total setelah keluar dari perulangan di atas.
kurang lebih jadi seperti ini :
* dengan operator div & mod
Code: [Select]
for i:=10 downto 0 do
begin
if total div cacah[i] > 0 then
begin
writeln(total div cacah[i],' lembar uang Rp.',cacah[i]);
total := total mod cacah[i];
end;
end;
* tanpa operator div & mod
Code: [Select]
................
if int(total/cacah[i]) > 0 then
begin
writeln(int(total/cacah[i]):0:0,' lembar uang Rp.',cacah[i]:0:0);
total := total - int(total/cacah[i])*cacah[i];
end;
ntah, silaken di cek aja. Gw coba sekilas aja, kalo ada kurangnya ya mohon diperbaiki