Enunciado

Classe InteiroIntervalo. Crie a classe InteiroIntervalo na qual cada objeto pode manter inteiros no intervalo de 0 a 100. Represente o conjunto internamente como um vector de valores bool. O elemento a[i] é true se o inteiro i estiver no conjunto. O elemento a[j] é false se o inteiro j não estiver no conjunto. O construtor default inicializa um conjunto para o chamado ‘conjunto vazio’, ou seja, um conjunto no qual todos os elementos contêm false.

Forneça funções-membro para as operações de conjunto comuns. Por exemplo, forneça uma função-membro uniaoConjuntos que crie um terceiro conjunto que seja a união teórica de conjunto dos dois conjuntos existentes (ou seja, um elemento do resultado é definido como true se esse elemento for true em um ou ambos os conjuntos existentes, e um elemento do resultado é definido como false se esse elemento for false em cada um dos conjuntos existentes).

Forneça uma função-membro intersecaoConjuntos que crie um terceiro conjunto que seja a intersecção teórica de conjunto dos dois conjuntos existentes (ou seja, um elemento do resultado é definido como false se esse ele mento for false em um ou ambos os conjuntos existentes, e um elemento do resultado é definido como true se esse elemento for true em cada um dos conjuntos existentes).

Forneça uma função-membro insereElemento que coloque um novo inteiro k em um conjunto definindo a[k] como true. Forneça uma função-membro deletaElemento que exclua o inteiro m definindo a[m] como false.

Forneça uma função-membro imprimeConjunto que imprima um conjunto como uma lista de números separados por espaços. Imprima apenas os elementos que estejam presentes no conjunto (ou seja, sua posição no vetor tem um valor true). Imprima --- para um conjunto vazio.

Forneça uma função-membro eIguala que determine se dois conjuntos são iguais. Forneça um construtor adicional que receba um array de inteiros e o tamanho desse array e use o array para inicializar um objeto definido.

Agora, escreva um programa controlador que teste sua classe InteiroIntervalo. Instancie vários objetos InteiroIntervalo. Teste se todas as suas funções- -membro funcionam corretamente.

Passo 1

Fala Galera!!! Tudo certo? Espero que sim!! Bora para mais um exercício.

Vamos criar um programa que contenha uma classe IntergerSet com dados-membros e funções-membros que serão responsáveis em criar array que caibam até 100 elementos e realizar a união, interseção e também verificar se os arrays são iguais. Nosso programa também será capaz de inserir e excluir os elementos dos arrays.

Passo 2

Vamos iniciar definindo as implementações de cabeçalho e a classe IntergerSet com os dados membros

#include

using namespace std;

class IntegerSet

{private:

int set[ 101 ];

public:

IntegerSet()

{initSet();

}

Passo 3

Agora precisamos definir o construtor da classe e também as funções que irão retornar os resultados das manipulações com os arrays

IntegerSet(int a[],int n)

{int i;

initSet();

for(i=0;i

insertElement(a[i]);

}

void printSet(char mess[])

{ cout

int i=0,j;;

cout

for(j=0;j

if(set[j]==1)

{cout

if((i+1)%15==0)

cout

i++;

}

cout

}

void initSet()

{int i;

for(i=0;i

set[i]=0;

}

void input(char mess[])

{ int n;

cout

cout

cin>>n;

while(n!=-1)

{while(n100||set[n]==1)

{cout

cout

cin>>n;

}

set[n]=1;

cout

cin>>n;

}

}

IntegerSet unionOfSets( IntegerSet& s )

{IntegerSet temp;

int i;

for(i=0;i

if (set[i]==1||s.set[i]==1)

temp.set[i]=1;

return temp;

}

IntegerSet intersectionOfSets( IntegerSet& s )

{IntegerSet temp;

int i;

for(i=0;i

if (set[i]==1&&s.set[i]==1)

temp.set[i]=1;

return temp;

}

void insertElement(int n)

{if(n100)

cout

else

set[n]=1;

}

void remove(int n)

{if(n100)

cout

else

set[n]=0;

}

bool isEqualTo( IntegerSet& s )

{int i;

for(i=0;i

if(set[i]!=s.set[i])

return false;

return true;

}

};

Passo 4

Para finalizar, vamos iniciar a função principal main() para criar os objetos da classe e pedir para que o usuário entre com os elementos que irão ser inseridos no array e por fim realizar a chamadas das funções definidas no programa.

int main()

{

IntegerSet a,b,c,d;

int n;

int array[]={12,67,98,34,21};

a.input("Digite o conjunto A");

a.printSet("Conjunto A");

b.input("Digite o conjunto B");

b.printSet("Conjunto B");

if(a.isEqualTo(b))

cout

else

cout

c=a.unionOfSets(b);

d=a.intersectionOfSets(b);

c.printSet("União de A e B");

d.printSet("Intersecção de A e B");

cout

cin>>n;

a.insertElement(n);

a.printSet("Conjunto A");

cout

cin>>n;

a.remove(n);

a.printSet("Conjunto A");

IntegerSet e(array,5);

e.printSet("\"Array\" conjunto:");

system("pause");

return 0;

}

Passo 5

A saída do nosso programa será:

Portanto, nosso programa está realizando todas as operações definidas com o array

Por hoje é só galera!!! Até o próximo exercício.

Resposta

Código:

#include

using namespace std;

class IntegerSet

{private:

int set[ 101 ];

public:

IntegerSet()

{initSet();

}

IntegerSet(int a[],int n)

{int i;

initSet();

for(i=0;i

insertElement(a[i]);

}

void printSet(char mess[])

{ cout

int i=0,j;;

cout

for(j=0;j

if(set[j]==1)

{cout

if((i+1)%15==0)

cout

i++;

}

cout

}

void initSet()

{int i;

for(i=0;i

set[i]=0;

}

void input(char mess[])

{ int n;

cout

cout

cin>>n;

while(n!=-1)

{while(n100||set[n]==1)

{cout

cout

cin>>n;

}

set[n]=1;

cout

cin>>n;

}

}

IntegerSet unionOfSets( IntegerSet& s )

{IntegerSet temp;

int i;

for(i=0;i

if (set[i]==1||s.set[i]==1)

temp.set[i]=1;

return temp;

}

IntegerSet intersectionOfSets( IntegerSet& s )

{IntegerSet temp;

int i;

for(i=0;i

if (set[i]==1&&s.set[i]==1)

temp.set[i]=1;

return temp;

}

void insertElement(int n)

{if(n100)

cout

else

set[n]=1;

}

void remove(int n)

{if(n100)

cout

else

set[n]=0;

}

bool isEqualTo( IntegerSet& s )

{int i;

for(i=0;i

if(set[i]!=s.set[i])

return false;

return true;

}

};

int main()

{

IntegerSet a,b,c,d;

int n;

int array[]={12,67,98,34,21};

a.input("Digite o conjunto A");

a.printSet("Conjunto A");

b.input("Digite o conjunto B");

b.printSet("Conjunto B");

if(a.isEqualTo(b))

cout

else

cout

c=a.unionOfSets(b);

d=a.intersectionOfSets(b);

c.printSet("União de A e B");

d.printSet("Intersecção de A e B");

cout

cin>>n;

a.insertElement(n);

a.printSet("Conjunto A");

cout

cin>>n;

a.remove(n);

a.printSet("Conjunto A");

IntegerSet e(array,5);

e.printSet("\"Array\" conjunto:");

system("pause");

return 0;

}

Resposta

Ei, a resposta está no passo a passo :)