include using namespace std const static int DS5 study this
Solution
Modified code;
Code:
#include<iostream>
using namespace std;
const static int DS=5;
class My_Bag
{
private:
int *b;
int cap;
int size;
public:
My_Bag();
My_Bag(int);
~My_Bag();
bool drop(int);
bool pick(int);
void display();
bool assign(My_Bag&);
My_Bag(int,int);
bool operator=(const My_Bag&);
My_Bag operator+(const My_Bag&);
My_Bag operator-(const My_Bag&);
bool operator==(const My_Bag&);
bool operator>(const My_Bag&);
};
bool My_Bag::assign(My_Bag& q)
{
if(size!=q.size || cap!=q.cap)
return false;
for(int i=0;i<size;i++)
b[i]=q.b[i];
return true;
}
My_Bag::My_Bag()
{
cap=DS;
size=0;
b=new int[cap];
}
My_Bag::My_Bag(int c)
{
if(c<=0)
cap=DS;
else
cap=c;
size=0;
b=new int[cap];
}
My_Bag::~My_Bag()
{
cout<<\"Cleaning up....\ \";
delete[] b;
cout<<\"Done.\ \";
}
bool My_Bag:: drop(int item)
{
if(size==cap)
return false;
b[size]=item;
++size;
return true;
}
bool My_Bag:: pick(int item)
{
int index=-1;
for(int i=0;i<size;i++)
{
if(b[i]==item)
{
for(int j=1;j<size;j++)
b[j]=b[j+1];
--size;
return true;
}
}
return false;
}
void My_Bag::display()
{
cout<<\"Bag capacity: \"<<cap<<endl;
cout<<\"Curremt size: \"<<size<<endl;
for(int i=0;i<size;i++)
cout<<b[i]<<\' \';
cout<<endl;
cout<<endl;
}
My_Bag::My_Bag(int c,int item)
{
if(c<=0)
cap=DS;
else
cap=c;
size=0;
b=new int[cap];
for(int i=0;i<cap;i++)
b[i]=item;
}
bool My_Bag:: operator=(const My_Bag& q)
{
cap=q.cap;
size=q.size;
for(int i=0;i<q.cap;i++)
b[i]=q.b[i];
return true;
}
My_Bag My_Bag:: operator+(const My_Bag& q)
{
My_Bag bb;
bb.cap=cap+q.cap;
bb.size=size+q.size;
int i;
bb.b=new int[bb.cap];
for(i=0;i<size;i++)
bb.b[i]=b[i];
for(int k=0;k<q.size;k++)
bb.b[i+k]=q.b[k];
return bb;
}
My_Bag My_Bag ::operator-(const My_Bag& q)
{
int flag=0;
My_Bag bb;
int* bbb=new int[q.cap];
int ind=0;
for(int i=0;i<size;i++)
{
flag=0;
for(int k=0;k<q.size;k++)
{
if(b[i]!=q.b[k])
flag=1;
}
if(flag==1)
bbb[ind++]=b[i];
}
bb.cap=q.cap;
bb.b=new int[bb.cap];
for(int k=0;k<ind;k++)
bb.b[k]=bbb[k];
return bb;
}
bool My_Bag ::operator==(const My_Bag& q)
{
int flag=0;
if(size!=q.size || cap!=q.cap)
return false;
for(int i=0;i<size;i++)
{
flag=0;
for(int k=0;k<q.size;k++)
{
if(b[i]==q.b[k])
{
flag=1;
break;
}
}
if(flag==0)
return false;;
}
return true;
}
bool My_Bag :: operator>(const My_Bag& q)
{
int flag=0;
if(size>q.size)
{
for(int i=0;i<q.size;i++)
{
for(int k=0;k<size;k++)
{
if(q.b[i]==b[k])
{
flag=1;
break;
}
}
if(flag==0)
{
return false;
}
}
return true;
}
else
return false;
}
int main()
{
My_Bag b1(5);
b1.drop(10);
b1.drop(10);
b1.drop(20);
b1.pick(10);
b1.drop(20);
b1.drop(30);
b1.drop(10);
b1.pick(20);
}



