Halo teman-teman, nama saya Erlangga, hari ini saya akan mencoba menyelesaikan masalah Cash – CS50x.

Apa itu “Greedy Algorithm”

Greedy Algorithm adalah algoritma pemecahan masalah untuk membuat pilihan secara optimal secara lokal disetiap tahap, tetapi untuk beberapa contoh kasus pemecahan masalah lainya kurang optimal.

Cash

  • Facebook
  • Twitter
  • Google+
  • Pinterest

Misalkan seorang kasir berhutang kembalian kepada pelanggan dan di laci kasir itu ada uang receh (25 ¢), dime (10 ¢), nikel (5 ¢), dan penny (1 ¢). Masalah yang harus dipecahkan adalah memutuskan koin mana dan berapa banyak dari masing-masing untuk diberikan kepada pelanggan. Semakin sedikit koin yang diberikan ke pelanggan maka semakin optimal.

Ada beberapa hal yang perlu diketahui 1 US Dollar = 100 US Cents, kemudian pada programnya nanti berupa bilangan pecahan dan hanya menerima masukkan angka ( masukkan > 0 ), jika diberi masukkan karakter dan bilangan kurang dari 0 maka akan meminta ulang masukkan sampai benar. Untuk detail implementasi teman teman bisa klik disini

Source Code

  • Facebook
  • Twitter
  • Google+
  • Pinterest

Pertama, saya mengimport 3 library, yaitu stdio.h, math.h, cs50.h . Kemudian pada program tersebut, saya menggunakan fungsi get_float untuk menginputkan bilangan bulat atau pecahan, fungsi get_float tersebut terdapat di library cs50, lalu saya menambahkan perulangan do while untuk mengecek apakah yang kita inputkan itu sudah sesuai atau belum dengan kondisi, jika tidak sesuai maka dia akan meminta masukkan ulang. Selanjutnya saya konversi dari dollar ke cent, dengan cara mengalikan inputan dengan angka 100 kemudian dibulatkan dengan fungsi round(untuk menggunakan fungsi round kita perlu mengimport library math.h). Kemudian memanggil fungsi coins, pada fungsi coins tersebut saya membuat array dengan ukuran 4, karena ada 4 koin yaitu 25c(quarter), 10c(dime), 5c(nikel), 1c(penny). Setelah itu saya menggunakan while untuk perulangan, jika cents tidak sama dengan 0 maka akan mengulang sampai kondisi salah. Pada while yang berada di dalam, dia akan mengulang jika cents itu lebih besar sama dengan koin yang berada di array pada indeks tertentu dan nilai cents akan dikurangi setiap loopnya dan nilai variabel count akan bertambah setiap loopingnya, variabel count tersebut digunakan untuk menghitung banyaknya koin. Setelah proses selesai nilai count akan dikembalikan, kemudian ditampilkan ke layar.

Teman-teman bisa beri kritik atau komentar dibawah, Terima Kasih.