Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

The only error I get in this code is in line 6. i\'m using Dev C++ compiler. It

ID: 3634313 • Letter: T

Question

The only error I get in this code is in line 6. i'm using Dev C++ compiler. It says expected identifier before "false", expected '{' before "false", expected unqualified-id before "false", expected ',' or ';' before "false", expected declaration before '}' token. everything else shows no error. i don't get it thanks in advance. program supposed to output:

s1 = {10,20,30,40} // Added Elements in set

s2 = {30,50,10,60} // Added Elements in set

s2 - {50} = {30,10,60} // Function call to remove 50

20 is in s1 // printing if 20 belongs to s1 as text

s1 intsec s2 = {10,30} // S1 N S2

s1 union s2 = {30,10,60,20,40} //S1 U S

2s1 /= s2 // print a cout statement if two sets are not equal

/*****************************************************************************/

#include <iostream>
#include <cstdlib>

const int maxCard = 100;
enum Bool {false, true};

class Set
{
public:
void EmptySet (void) {card = 0;}
Bool Member (const int);
void AddElem (const int);
void RmvElem (const int);
void Copy (Set&);
Bool Equal (Set&);
void Intersect (Set&, Set&);
void Union (Set&, Set&);
void Print (void);
private:
int elems[maxCard]; //set elements
int card; //set cardinality
};

//Implementation file

Bool Set::Member (const int elem)
{
for (register i = 0; i < card; ++i)
if (elems[i] == elem)
return true;
return false
}

void Set::AddElem (const int elem)
{
if (Member(elem))
return;
if (card < maxCard)
elems[card++] = elem;
else
cout << "Set overflow ";
}

void Set::RmvElem (const int elem)
{
for (register i = 0; i < card; ++i)
if (elems[i] == elem)
{
for (; i < card-1; ++i)
elems[i]-elems[i+1];
--card;
}
}

void Set::Copy (Set &set)
{
for (register i = 0; i < card; ++i)
set.elems[i] = elems[i];
set.card = card
}

Bool Set::Equal (Set &set)
{
if (card != set.card)
return false;
for (register i = 0; i < card; ++i)
if (!set.Member(elems[i]))
return false;
return true;
}

void Set::Intersect (Set &set, Set &res)
{
res.card = 0;
for (register i = 0; i < card; ++i)
if (set.Member(elems[i]))
res.elems[res.card++] = elems[i];
}

void Set::Union (Set &set, Set &res)
{
set.Copy(res);
for (register i = 0; i < card; ++i)
res.AddElem(elems[i]);
}

void Set::Print (void)
{
cout << "{";
for (int i = 0; i < card-1; ++i)
cout << elems[i] << ",";
if (card > 0)
cout << elems[card-1];
cout << "} ";
}

//Main Program

int main()
{
Set s1, s2, s3;

s1.EmptySet();
s2.EmptySet();
s3.EmptySet();
s1.AddElem(10);
s1.AddElem(20);
s1.AddElem(30);
s1.AddElem(40);
s2.AddElem(30);
s2.AddElem(50);
s2.AddElem(10);
s2.AddElem(60);

cout << "s1 = ";s1.Print();
cout << "s2 = ";s2.Print();
s2.RmvElem(50);cout << "s2 - {50} = ";
s2.Print();

if (s1.Member(20))
cout << "20 is in s1 ";

s1.Intersect(s2,s3);
cout << "s1 intsec s2 = ";

s3.Print();s1.Union(s2,s3);
cout << "s1 union s2 = ";

s3.Print();
if (!s1.Equal(s2))
cout << "s1 /= s2 ";

system("PAUSE");
return 0;
}

Explanation / Answer

please rate - thanks

true and false are keywords (reserved words) in C++ and can only be used as such. I changes them to mytrue and myfalse.

you were missing using namespace std

and I changed all register to int. I didn't understand that

it now compiles and runs, and just needs a little debugging

/*****************************************************************************/

#include <iostream>
#include <cstdlib>
using namespace std;
const int maxCard = 100;
enum Bool {myfalse,mytrue};

class Set
{
public:
void EmptySet (void) {card = 0;}
Bool Member (const int);
void AddElem (const int);
void RmvElem (const int);
void Copy (Set&);
Bool Equal (Set&);
void Intersect (Set&, Set&);
void Union (Set&, Set&);
void Print (void);
private:
int elems[maxCard]; //set elements
int card; //set cardinality
};

//Implementation file

Bool Set::Member (const int elem)
{
for (int i = 0; i < card; ++i)
if (elems[i] == elem)
return mytrue;
return myfalse;
}

void Set::AddElem (const int elem)
{
if (Member(elem))
return;
if (card < maxCard)
elems[card++] = elem;
else
cout << "Set overflow ";
}

void Set::RmvElem (const int elem)
{
for (int i = 0; i < card; ++i)
if (elems[i] == elem)
{
for (; i < card-1; ++i)
elems[i]-elems[i+1];
--card;
}
}

void Set::Copy (Set &set)
{
for (int i = 0; i < card; ++i)
set.elems[i] = elems[i];
set.card = card;
}

Bool Set::Equal (Set &set)
{
if (card != set.card)
return myfalse;
for (int i = 0; i < card; ++i)
if (!set.Member(elems[i]))
return myfalse;
return mytrue;
}

void Set::Intersect (Set &set, Set &res)
{
res.card = 0;
for (int i = 0; i < card; ++i)
if (set.Member(elems[i]))
res.elems[res.card++] = elems[i];
}

void Set::Union (Set &set, Set &res)
{
set.Copy(res);
for (int i = 0; i < card; ++i)
res.AddElem(elems[i]);
}

void Set::Print (void)
{
cout << "{";
for (int i = 0; i < card-1; ++i)
cout << elems[i] << ",";
if (card > 0)
cout << elems[card-1];
cout << "} ";
}

//Main Program

int main()
{
Set s1, s2, s3;

s1.EmptySet();
s2.EmptySet();
s3.EmptySet();
s1.AddElem(10);
s1.AddElem(20);
s1.AddElem(30);
s1.AddElem(40);
s2.AddElem(30);
s2.AddElem(50);
s2.AddElem(10);
s2.AddElem(60);

cout << "s1 = ";s1.Print();
cout << "s2 = ";s2.Print();
s2.RmvElem(50);cout << "s2 - {50} = ";
s2.Print();

if (s1.Member(20))
cout << "20 is in s1 ";

s1.Intersect(s2,s3);
cout << "s1 intsec s2 = ";

s3.Print();s1.Union(s2,s3);
cout << "s1 union s2 = ";

s3.Print();
if (!s1.Equal(s2))
cout << "s1 /= s2 ";

system("PAUSE");
return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote