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();
}