Oktober 22, 2012

program algoritma greedy/ PAA pert 1


Dalama program kali ini kita akan menggnakan c++,oleh karena itu untuk prototype nya sedikit berbedadari bahasa c,,pertama-tama kita sertakan dahulu prototype dan file hider yang di butuhkan dalampembuatan program kali ini yaitu

# include <iostream.h>
# include <stdio.h>
# include <conio.h>
# define sz 10
# include <iostream.h># include <stdio.h># include <conio.h># define sz 10Pertama kita sertakan iostream.h yang berfungsi untuk menampung perintah dan fungsi-funsgi tertentudalam c++Kedua yaitu kita buat file header stdio.h yang berguna untuk mengaktifkan fungsi cetak dan input ,ytucin dan coutSedangkan conio berfungsi untuk mengaktifkan funsgi seperti getch dan clrscrrKemudian kita buat prototype terkahir yaitu define,define disini berfungsi untuk menyamaknmaksud,,artinya kata sz disini bernilai 10,sehingga dalam program kita tidak perlu menuliskanangkanya,cukup dengan kata sz.

class SumOfSubs {
int w[sz];
int x[sz];
int n;
int m;
public:
SumOfSubs();
void getdata();
void sumofsubs(int, int, int); };

Selanjtunya kita buat sebuah class bernama sumofsubs yang mempunyai beberapa atribut dan methodclass SumOfSubs{int w[sz];int x[sz];disini kita mendeklarasikan sebuah array bernama w dan x dengan jumlah array menampung sebanyak 5int n;int m;selanjutnya kita deklarasikan sebuah variable n,dan m bertipe integerpublic:SumOfSubs();void getdata();kemudian kita disni kita buat method bernama sumofsubs dan void getdatavoid sumofsubs(int, int, int);dan kemudian kita buat lagi method terakhir tetapi mempunyai 3 parameter,};
SumOfSubs::SumOfSubs() {
w[sz] = 0;
x[sz] = 0;
n = 0;
m = 0; }
Langkah berikutnya adalah membuat sebuah kostruktorSumOfSubs::SumOfSubs(){w[sz] = 0;x[sz] = 0;n = 0;m = 0;}Di kontruktor ini isinya sama saja dengan class,,karena sebenarnya konstruktor itu tipe dari class itusendiri,Cuma bedanya di kontruktor ini kita membuat sebuah insisialisasi nilai.void SumOfSubs::getdata(){int i;int sum = 0;

void SumOfSubs::getdata() {
int i;
int sum = 0;
cout<<"Masukkan jumlah koin :";
cin>>n;
fflush(stdin);
cout<<"\n\n";
berikutnya kita buat sebuah method sumofsubs dengan pewarisan dari get data,pertama kitadeklarasikan dahulu yaitu int I yang berguna untuk melakukan sebuah perulangan nantinya,int sum =o,digunakan untuk melakukan penjumlahan,tetapi kita isikan dulu nilai nyaa sama dengan 0cout<<"ENTER HOW MANY NUMBERS : ";kemudian kita cetak berapa nomor yag ingin dimasukkan dengan perintah coutcin>>n;selanjutnya dengan perintah cinn kita buat sebuah inputan yang menmapung variabel nfflush(stdin);digunakan untuk alokasi memorycout<<"\n\n";untuk mencetak spasi kebawah

for(i = 1; i<= n; i++) {
cout<<"Nominal Koin "<<i<<" :";
cin>>w[i];
fflush(stdin); }
cout<<"\n\nJumlah nominal koin: ";
cin>>m;
fflush(stdin);
for(i = 1; i <= n; i++)
sum = sum + w[i];
sumofsubs(0, 1, sum); }
Langkah beriktunya adalah pembuatan sebuah nilai sum dengan melakukan perulangan terlebih dahulufor(i = 1; i<= n; i++){disini for akan melakukan perulangan dari nilai 1 sampai kecil sama dengan nilai inputan yaitu sebanyakncout<<"ENTER POSITIVE NUMBER : ";kemudian buat cetakan yang menyuruh menginpur pisitve numbercin>>w[i];selnjutnya cin akan menampaung nya dengan menggunakan sebuah arrayfflush(stdin);}cout<<"\n\nSUM UP VALUE (LIMIT) : ";dan buat cetakan sum up value atau jug aterjadi kelimitancin>>m;dan varibel m akan menampung banyaknya limitfflush(stdin);for(i = 1; i <= n; i++)selanjutnya kiat aakan buat perulangan lagi untuk mendapatkan nilai sumsum = sum + w[i];disini sum akan mendapatkan nilai dari perulangan teresbut dengan cara si W akan menampung nilai-nilai nyaasumofsubs(0, 1, sum);
void SumOfSubs::sumofsubs(int s, int k, int r) {
int i;
int temp[sz];
_setcursortype(_NOCURSOR);
selanjutnya sumofsubs disini akan mempunay parameter yang menampung nilai-nilai tersebut,termasuk sum}Kemduain kita buat kostruktor baru lagi dengan parameter yaitu s,k,dan rvoid SumOfSubs::sumofsubs(int s, int k, int r){int i;int temp[sz];disni kita buat lagi sbuah deklarasi variabel untuk melakukan perulangan yitu variabel I dan kita bautarrya baru lagi bernama temp dengan niali batas array yaitu sampai 5. _setcursortype(_NOCURSOR);Artinnya /*tampilkan pesan kesalahan jika panjang kalimat lebih dari 20 huruf
x[k] = 1;
if((s + w[k]) == m) {
cout<<"\n\nPosisi :";
for(i = 1; i <= k; i++) {
cout<<" "<<x[i];
temp[i] = x[i]; }
cout<<"\nHasil : { ";
for(i = 1; i <= k; i++) {
if(temp[i] == 1)
cout<<w[i]<<" "; }
cout<<"}"; }
x[k] = 1;kemudian kita buat variebl x dengan k sebagai array nya bernilai 1.


else if((s + w[k] + w[k+1]) <= m)
sumofsubs((s + w[k]), (k + 1), (r - w[k]));
if(((s + r - w[k]) >= m) && ((s + w[k+1]) <= m)) {
x[k] = 0;
sumofsubs(s, (k + 1), (r - w[k])); } }



void main()
{
clrscr();
textmode(C80);
SumOfSubs S;
S.getdata();
getch();
}

1 komentar:

  1. kita juga punya nih jurnal mengenai algoritma greedy, silahkan dikunjungi dan dibaca , berikut linknya
    http://desa-loyang.blogspot.com/2011/05/algoritma-backtrack-dalam-pemecahan.html
    semoga bermanfaat yaa :)

    BalasHapus