#include <iostream>
using namespace std;
class IntSet
{
public:
bool* value;
int size;
// CONSTRUCTORS
IntSet(int val1 = -1, int val2 = -1, int val3 = -1, int val4 = -1, int val5 = -1);
IntSet(const IntSet &other);
~IntSet();
};
IntSet::IntSet(int val1, int val2, int val3, int val4, int val5)
{
// check if all values are default.
if((val1 == -1) && (val2 == -1) && (val3 == -1) && (val4 == -1) && (val5 == -1))
{
val1 = 1;
size = 1;
// else if one or more values are not default, find largest value and
// set size to the value.
}
else
{
if(val1 >= val2 && val1 >= val3 && val1 >= val4 && val1 >= val5) {
size = val1;
}
if(val2 >= val1 && val2 >= val3 && val2 >= val4 && val2 >= val5) {
size = val2;
}
if(val3 >= val1 && val3 >= val2 && val3 >= val4 && val3 >= val5) {
size = val3;
}
if(val4 >= val1 && val4 >= val2 && val4 >= val3 && val4 >= val5) {
size = val4;
}
if(val5 >= val1 && val5 >= val2 && val5 >= val3 && val5 >= val4) {
size = val5;
}
}
// Create pointer to boolean array of size "size"
bool *value = new bool[size];
// set all values at their specified index to true.
if(val1 >= 0)
value[val1] = true;
if(val2 >= 0)
value[val2] = true;
if(val3 >= 0)
value[val3] = true;
if(val4 >= 0)
value[val4] = true;
if(val5 >= 0)
value[val5] = true;
std::cout << "Size=" << size << std::endl;
}
//------------------------------------------------------------------------------
IntSet::IntSet(const IntSet &otherSet) : size(otherSet.size)
{
cout << "In Copy Constructor" << endl;
value = new bool[size];
for(int i = 0; i < size; i++)
value[i] = otherSet.value[i];
}
//------------------------------------------------------------------------------
IntSet::~IntSet()
{
cout << "In Destructor" << endl;
delete[] value;
}
int main()
{
IntSet set(4, 5, 6); //
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgSW50U2V0IAp7CnB1YmxpYzoKCWJvb2wqIHZhbHVlOwoJaW50IHNpemU7CgkKCS8vIENPTlNUUlVDVE9SUwoJSW50U2V0KGludCB2YWwxID0gLTEsIGludCB2YWwyID0gLTEsIGludCB2YWwzID0gLTEsIGludCB2YWw0ID0gLTEsIGludCB2YWw1ID0gLTEpOwoJSW50U2V0KGNvbnN0IEludFNldCAmb3RoZXIpOwoJfkludFNldCgpOwp9OwoKSW50U2V0OjpJbnRTZXQoaW50IHZhbDEsIGludCB2YWwyLCBpbnQgdmFsMywgaW50IHZhbDQsIGludCB2YWw1KSAKewoJLy8gY2hlY2sgaWYgYWxsIHZhbHVlcyBhcmUgZGVmYXVsdC4KCWlmKCh2YWwxID09IC0xKSAmJiAodmFsMiA9PSAtMSkgJiYgKHZhbDMgPT0gLTEpICYmICh2YWw0ID09IC0xKSAmJiAodmFsNSA9PSAtMSkpIAoJewoJCgkgICAgdmFsMSA9IDE7CgkgICAgc2l6ZSA9IDE7CgkKCS8vIGVsc2UgaWYgb25lIG9yIG1vcmUgdmFsdWVzIGFyZSBub3QgZGVmYXVsdCwgZmluZCBsYXJnZXN0IHZhbHVlIGFuZCAKCS8vIHNldCBzaXplIHRvIHRoZSB2YWx1ZS4KCX0gCgllbHNlIAoJewoJICAgIGlmKHZhbDEgPj0gdmFsMiAmJiB2YWwxID49IHZhbDMgJiYgdmFsMSA+PSB2YWw0ICYmIHZhbDEgPj0gdmFsNSkgewoJICAgICAgICBzaXplID0gdmFsMTsKCSAgICB9CgkKCSAgICBpZih2YWwyID49IHZhbDEgJiYgdmFsMiA+PSB2YWwzICYmIHZhbDIgPj0gdmFsNCAmJiB2YWwyID49IHZhbDUpIHsKCSAgICAgICAgc2l6ZSA9IHZhbDI7CgkgICAgfQoJCgkgICAgaWYodmFsMyA+PSB2YWwxICYmIHZhbDMgPj0gdmFsMiAmJiB2YWwzID49IHZhbDQgJiYgdmFsMyA+PSB2YWw1KSB7CgkgICAgICAgIHNpemUgPSB2YWwzOwoJICAgIH0KCQoJICAgIGlmKHZhbDQgPj0gdmFsMSAmJiB2YWw0ID49IHZhbDIgJiYgdmFsNCA+PSB2YWwzICYmIHZhbDQgPj0gdmFsNSkgewoJICAgICAgICBzaXplID0gdmFsNDsKCSAgICB9CgkKCSAgICBpZih2YWw1ID49IHZhbDEgJiYgdmFsNSA+PSB2YWwyICYmIHZhbDUgPj0gdmFsMyAmJiB2YWw1ID49IHZhbDQpIHsKCSAgICAgICAgc2l6ZSA9IHZhbDU7CgkgICAgfQoJfQoJCgkvLyBDcmVhdGUgcG9pbnRlciB0byBib29sZWFuIGFycmF5IG9mIHNpemUgInNpemUiCglib29sICp2YWx1ZSA9IG5ldyBib29sW3NpemVdOwoJCgkvLyBzZXQgYWxsIHZhbHVlcyBhdCB0aGVpciBzcGVjaWZpZWQgaW5kZXggdG8gdHJ1ZS4KCWlmKHZhbDEgPj0gMCkKCSAgICB2YWx1ZVt2YWwxXSA9IHRydWU7CgkKCWlmKHZhbDIgPj0gMCkKCSAgICB2YWx1ZVt2YWwyXSA9IHRydWU7CgkKCWlmKHZhbDMgPj0gMCkKCSAgICB2YWx1ZVt2YWwzXSA9IHRydWU7CgkKCWlmKHZhbDQgPj0gMCkKCSAgICB2YWx1ZVt2YWw0XSA9IHRydWU7CgkKCWlmKHZhbDUgPj0gMCkKCSAgICB2YWx1ZVt2YWw1XSA9IHRydWU7CgkgICAgCiAgICBzdGQ6OmNvdXQgPDwgIlNpemU9IiA8PCBzaXplIDw8IHN0ZDo6ZW5kbDsKfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkludFNldDo6SW50U2V0KGNvbnN0IEludFNldCAmb3RoZXJTZXQpIDogc2l6ZShvdGhlclNldC5zaXplKQp7Cgljb3V0IDw8ICJJbiBDb3B5IENvbnN0cnVjdG9yIiA8PCBlbmRsOwoJCgl2YWx1ZSA9IG5ldyBib29sW3NpemVdOwoJZm9yKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKCSAgICB2YWx1ZVtpXSA9IG90aGVyU2V0LnZhbHVlW2ldOwp9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKSW50U2V0Ojp+SW50U2V0KCkgCnsKCWNvdXQgPDwgIkluIERlc3RydWN0b3IiIDw8IGVuZGw7CglkZWxldGVbXSB2YWx1ZTsKfQoKaW50IG1haW4oKQp7CglJbnRTZXQgc2V0KDQsIDUsIDYpOyAvLwoJcmV0dXJuIDA7Cn0=