melanjutkan postingan sebelumnya yaitu Pengertian Algoritma Greedy, kali ini akan dibahas tentang program yang menggunakan algoritma tersebut.
Untuk programnya tentang pengambilan koin, yang menggunakan algoritma greedy. Bahasa pemrograman yang saya gunakan adalah bahasa C++, dan software yang digunakan adalah borland C.
Berikut kode sumbernya :
#include<stdio.h>
#include<conio.h>
#define size 99
void sort(int[], int);
main(){
int x[size],i,uang,n,hasil[size];
printf("\n Banyak Koin : ");
scanf("%d", &n);
printf("\n \n Masukan Jenis Koin : \n");
for (i=1;i<=n;i++)
{
scanf("\n %d", &x[i]);
}
sort(x,n);
printf("\n Koin yang tersedia : \n");
for (i=1;i<=n;i++)
{
printf("%d",x[i]);
printf("\n");
}
printf("\n");
printf("\n Masukan Nilai yang dipecah : ");
scanf("%d", &uang);
printf("\n");
for (i=1;i<=n;i++)
{
hasil[i]=uang/x[i];
uang=uang%x[i];
}
for (i=1;i<=n;i++)
{
printf("Keping %d", x[i]);
printf("-an sebanyak : %d", hasil[i]);
printf("\n \n");
}
getch();
return 0;
}
void sort (int a[], int siz)
{
int pass, hold,j;
for (pass=1;pass<=siz-1;pass++){
for (j=0;j<=siz-2;j++){
if (a[j+1]<a[j+2]){
hold = a[j+1];
a[j+1]=a[j+2];
a[j+2]=hold;
}
}
}
}
Berikut ini logika programnya
1. Buka Borland C setelah itu pilih new -> text edit atau bias juga dengan text editor lain seperti noetepad ++.
2. Masukan kode sumber yang sudah di benarkan , lalu save dengan ekstensi .cpp, untuk namanya terserah tapi disini saya memberi nama dengan greedy.cpp
3. Seperti yang kita tahu bahwa bahas c terdiri dari library input – output. Oleh karena itu kita harus selalu mendeklarasikan jika ingin menggunaknnya. Selain library juga kita harus mendeklarasikan input-nya dapat berupa string atau interger
#include<stdio.h> = deklarasi standard input output .
#include<conio.h> = deklarasi input-output seperti perintah getch,getche .
#define size 99 = mendefinisikan bahwa input hanya berupa interger
4. Selanjutnya ada perintah
void sort(int[], int); => dekalrasi fungsi sort yang bernilai void, dan berparameter array interger.
5. Lalu terdapat blok programselanjutnya berfunggsi untuk mengimput banyak koin yang ingin di masukkan.
int x[size],i,uang,n,hasil[size]; => deklarasi variable x berparameter size dengan tipe data I integer.
printf("\n Banyak koin : "); => mencetak string “Banyak koin :”
scanf("%d", &n); =>untuk mengambil input dari keyboard, dengan tipe integer.
Pada baris selanjutnya kita di minta untuk memasukkan jenis koin yang kita punya. Disini terjadi perulangan denga perintah for.
printf("\n \n Masukan jenis koin : \n"); => untuk mencetak “Masukan jenis koin”.
for (i=1;i<=n;i++) => disini terjadi iterasi dan increment,dengan nilai awal I =1
{
scanf("\n %d", &x[i]); = > memasukkan inputan pada variable x pada index ke i
6. Setelah prose iterasi yang ada di atas masuk lagi kebagian sorting/ pengurutan
sort(x,n); => mengurtkan dari variable x ke n
printf("\n Koin yang tersedia : \n");.
for (i=1;i<=n;i++)=> terjadi perulangan lagi dengan nilai awal i=1 dan I lebih kecil sama dengan n, lalu i increment
{printf("%d",x[i]); = >mencetak isi dari variable x index ke i
printf("\n"); => baris baru. }
printf("\n"); => mencetak baris baru.
printf("\n Masukan nilai yang dipecah : "); => disini menanyakan untuk nilai yang ingin di pecah dengan uang koin.
scanf("%d", &uang); = > membaca inputan dan di masukkan ke variable uang dengan tipe integer.
printf("\n"); => baris baru.
for (i=1;i<=n;i++) => perulangn seperti diaatas
{
hasil[i]=uang/x[i]; => memberi nilai variable hasil dengan rumus uang di bagi x indeks ke i
uang=uang%x[i]; => lalu memberikan nilai uang dari variable uang modulus x indeks ke i
}
7. Pada bagian ini akan di hasilkan berapa koin yang di butuhkan untuk memecah uang yang di input .
for (i=1;i<=n;i++) => perulangan penambahan nilai i dengan
1 mulai dari 1 hingga kurang dari sama dengan nilai n.
1 mulai dari 1 hingga kurang dari sama dengan nilai n.
{
printf("Keping %d", x[i]); = > mencetak nilai keeping dengan nilai x indeks ke i.
printf("-an sebanyak : %d", hasil[i]); =mencetak berapa koin yang akan di pakai
printf("\n \n");
}
getch(); =>menampilkan output.
return 0; => mengembalikan nilai menjadi 0.
}
void sort (int a[], int siz) = >disini deklarsi fungsi sort dengan pareameter a array , siz
{
int pass, hold,j; = >deklarasi variable pass,hold,dan j
for (pass=1;pass<=siz-1;pass++){ = >iterasi selama pass dengan nilai awal 1 lebih kecil sama dengan siz lalu increment pass.
for (j=0;j<=siz-2;j++){ = >iterasi j dengan nilai awal j=0 dan lebih kecil sama dengan variable siz-2 dan j increment.
if (a[j+1]<a[j+2]){ => iterasi pada a indeks ke j+1 lebih kecil dari a indeks j+2
hold = a[j+1]; => memberi nilai pada hold
a[j+1]=a[j+2]; = > deklarasi bahwa a indeks j+1 sama dengan array a indeks j+2
a[j+2]=hold; => array a indeks j+2 sama nilainya dengan hold
}}}}
8. Maka setelah di jalankan dan benar program akan mengeluarkan output seperti ini :
Disini saya mencoba memasukkan 3 koin,koin yang pertama 100 ,50 dan 200. Proses pertama adalah sorting karena ini algoritma greedy maka koin dengan angka terbesar terletak pada posisi awal sehingga akan tersusun seperti di atas yaitu
200
100
50
Setelah itu kita masukkan nilai uang yang akan di pecah , disini saya beri nilai 250. Maka cara paling efektif untuk mendapatkan nilia 250 adalah dengan 1 koin 200-an dengan 1 koin 50-an.
Bagikan :
Wah saya sudah lupa dengan pemrograman, hehehehe :D
BalasHapusmending gausah diinget gan bikin pusing
Hapusalgoritma greedy nya terdapat dimana pada source di atas bang...?
BalasHapuswaaahhhh... mantap min
BalasHapusada penjelasannya jugaa... jarang jarang ketemu yg dijelasin kek gini
mantap gan padat penjelasanya jadi inget lagi algorithm greedy
BalasHapus