Listing Program
#include<stdio.h>
#include<conio.h>
#define
size 99
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;
}}}}
main()
{
int x[size],i,uang,n,k,hasil[size];
printf("PAA-ALGORITMA
GREEDY\n");
printf("\nMasukan berapa jenis
koin : ");
scanf("%d",&n);
printf("\n\nMasukan Jenis Koin
: \n");
for(i=1;i<=n;i++)
{
printf("Koin ke %d
: ",i);
scanf("%d",&x[i]);
}
sort(x,n);
printf("\nKoin yang tersedia :
\n");
for(i=1;i<=n;i++)
{
printf("%d",x[i]);
printf("\n");
}
printf("\n");
printf("\nMasukan Nilai yang
dipecah : ");
scanf("%d",&uang);
printf("\n");
for(i=1;i<=n;i++)
{
hasil[i]=uang/x[i];
uang=uang%x[i];
k=uang%x[i];
}
for(i=1;i<=n;i++)
{
printf("Koin
%d",x[i]);
printf("-an
sebanyak : %d",hasil[i]);
printf("\n\n");
}
if(k!=0){
printf("Tidak ada
Solusi");
}
else{
printf("Ada Solusi");
}
getch();
return 0;
}
Logika Program
Pada
pertemuaan kali ini saya akan membuat logika dar program yang saya buat. Disini
saya menggunakan bahasa C++. Berikut adalah logikanya.
#include<stdio.h>
Dalam
c++ jika kita menginginkan penggunaan input dan output, atau bisa diartikan
sebagai standard library yang berfungsi untuk I/O package maksudnya
digunakan jika kita ingin pada program kita menggunakan fungsi standard input
atau output bisa dikatakan seperti portable input/output package. Tanpa
menggunakan library ini, kita tidak bisa menggunakan perintah-perintah
input/output pada program kita.
#include<conio.h>
Pernyataan
conio.h adalah library
pada C yang digunakan untuk mengkoneksikan pernyataan clrscr() dengan program
yang kita buat. Tanpa menggunakan library ini, kita tidak bisa menggunakan
fungsi prototype seperti: gotoxy(), clrscr(), clreol(). Dan juga file header ini berfungsi untuk menampilkan hasil antarmuka
kepada pengguna.
#define size 99
Library di atas berguna untuk menentukan size
dari inputan banyak datanya adalah 99, artinya jika data lebih banyak dari 99,
maka program akan berhenti mengeksekusi.
void sort (int a[],int siz)
Pernyataan
diatas adalah main procedure (prosedur utama dalam program ini). Pada program
ini, program utama berbentuk prosedur untuk mengurutkan data yang kita input,
disini yang akan diurutkan adalah variable masukan dari int[] dan int.
{
Kurung
kurawal pertama digunakan untuk memulai membuat program.
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;
Ini
merupakan perulangan pass dengan nilai
awal 1, hingga pass lebih kecil sama
dengan siz lalu pass berulang secara increment . Iterasi i dengan nilai awal
i=0, hingga i lebih kecil sama dengan variable siz-2 dan i berulang secara
increment. Serta ada penyeleksian kondisi dimana jika a indeks ke i+1 lebih kecil dari a indeks
i+2, maka akan memberi nilai pada hold.
main()
Pernyataan
di atas digunakan sebagai badan program. Fungsinya sama seperti
public.static.void.main(String args[]) { pada bahasa pemrograman java.
int x[size],i,uang,n,k,hasil[size];
Pernyataan
di atas digunakan untuk mendefinisikan variable yang akan digunakan dalam
programnya. Tanda kurung siku [ ] menandakan variable tersebut bertipe array.
printf("\nMasukan berapa jenis koin : ");
Pernyataan
printf di atas digunakan untuk mencetak tulisan yang ada diantara tanda kutip “
”. \n digunakan untuk
member jeda (enter) pada saat program dieksekusi.
scanf("%d", &n);
Pernyataan scanf digunakan untuk menyimpan angka
yang kita input ketika program dieksekusi. Disini terdapat %d yang mengartikan
data inputan akan ditampilkan dalam bentuk decimal, dan &n mempunyai arti
data inputan akan disimpan sementara pada variable n.
printf("\n\nMasukan
Jenis Koin : \n");
for
(i=1;i<=n;i++){
printf("Koin
ke %d : ",i);
scanf("
%d", &x[i]);
Pertama
kita akan mencetak kalimat yg di dalam tanda kutip, lalu kita input jumlah koin
yang diinginkan. Misalnya jenis koin yang kita input = 3. Maka untuk i sama
dengan 1, i kurang dari sama dengan n, maka i akan bertambah 1. Maka
selanjutnya akan menjalankan perintah menampilkan koin ke 1 lalu kita input
angka begitupun seterusnya hingga koin ke 3.
sort(x,n);
printf("\nKoin
yang tersedia (Rp): \n");
Setelah
kita memasukkan jenis koin yang kita inginkan, maka program tersebut akan
mencetak secara berurutan dari nominal terkecil hingga nominal terbesar, dan \n
digunakan untuk memberi jeda atau enter.
for(i=1;i<=n;i++)
untuk
I sam dengan 1, dan I kurang dari sama dengan n, maka I akan bertambah.
printf("%d",x[i]);
printf("\n");
Mencetak
hasil dari angka atau jumlah koin yang kita inputkan tadi dan memberikan
jeda(enter) untuk syntak berikutnya.
printf("\nMasukan Nilai yang dipecah : Rp ");
mencetak
kalimat yang berada di dalam tanda kutip, lalu diberikan jeda untuk memproses
syntak berikutnya.
scanf("%d",
&uang);
printf("\n");
Digunakan
untuk menyimpan angka yang kita input ketika program dieksekusi. %d yang
mengartikan data inputan akan ditampilkan dalam bentuk decimal, dan &uang
mengartikan data inputan akan disimpan sementara pada variable uang lalu memberikan
jeda(enter) kepada syntak selanjutnya.
for(i=1;i<=1;i++)
{
hasil[i]=uang/x[i];
uang=uang%x[i];
k=uang%x[i]; }
Pernyataan
for di atas digunakan sebagai kondisi perulangan pada program, sedangkan
pernyataan hasil[i]=uang/x[i]; digunakan sebegai rumus perhitungan untuk
mendapatkan kombinasi koin apa saja yang digunakan untuk menukarkan koin yang
ingin kita tukarkan dengan koin yang tersedia, lalu pernyataan uang=uang%x[i];
digunakan untuk menentukan berapa banyaknya kombinasi koin dalam pertukaran
koinnya.
for(i=1;i<=1;i++)
untuk
I sama dengan 1, I kurang dari sama dengan 1 maka I akan bertambah.
printf("hasil algoritma greedynya adalah :
\n");
mencetak
kalimat yang berada di dalam tanda kutip setelah itu membuat jeda(enter).
printf("koin
%d", x[i]);
printf("-an
sebanyak : %dkeping", hasil[i]);
printf("\n
\n");
Untuk mencetak koi n
yang kita inputkn sebelumnya untuk di pecah dengan hasil perhitungan dari rumus
hasil[i]=uang/x[i]. Dan \n untuk memberikan jeda atau enter ke perintah
selanjutnya.
if(k!=0){
printf("tidak
ada solusi"); }
else{
printf("Ada
solusi"); }
Jika
k tidak sama dengan 0, maka pada layar akan muncul tulisan Tidak Ada Solusi
namun jika k sama dengan 0 maka yang keluar adalah tulisan Ada Solusi.
getch();
Berguna
unutk membaca sebuah karakter, bisa juga membaca tombol, getch() tidak akan
menampilkan karakter dari tombol yang ditekan. Sebuah getch() bisa pula
digunakan untuk menunggu sembarang tombol ditekan. Pada keadaan seperti ini,
hasil dari fungsi ini tidak perlu diletakkan ke variable, atau dipascal dapat
diartikan sebagai readln
return 0;
Angka 0 ini akan
dikembalikan kepada sistem operasi. Nilai ini digunakan oleh sistem operasi
untuk disimpan di variabel ERRORLEVEL pada MS DOS, dimana 0 artinya ‘sukses’.
}
Kurung
kurawal terakhir untuk mengakhiri program yang kita buat.
Output
EmoticonEmoticon