PLE:Unidad6Ejercicio03

Fichero conjunto.h

/* conjunto.h

class conjunto {  private: int elementos[64]; int cont; public: conjunto; void agregar(int e); void eliminar(int e); bool esMiembro(int e); int posicion(int e); void imprimir; int operator[](int i); bool operator==(conjunto c); bool operator!=(conjunto c); conjunto &operator=(conjunto c); conjunto operator*(conjunto c); conjunto operator+(conjunto c); conjunto operator-(conjunto c); };

Fichero conjunto.cpp

/* programa:      ej03 fecha:         11/05/2007 Descipcion:    conjunto.cpp
 * 1) include 
 * 2) include 
 * 3) include 
 * 4) include "conjunto.h"
 * 1) include "conjunto.h"

conjunto::conjunto {       cont = 0; }

bool conjunto::esMiembro(int e) { int i;       for(i=0; i < cont; i++) if(elementos[i] == e)                       return true; return false; }

void conjunto::agregar(int e) { if(!esMiembro(e)) elementos[cont++] = e; }

int conjunto::posicion(int e) { int i;       for(i=0; i < cont; i++) if(elementos[i] == e)                       return i;        return -1; }

void conjunto::eliminar(int e) { int i;       if(esMiembro(e)) {               for(i = posicion(e); i < cont-1; i++) {                       elementos[i] = elementos[i+1]; }               cont--; } }

void conjunto::imprimir {       int i;        cout << "{"; for(i=0; i < cont-1; i++) {               cout << elementos[i] << ", "; }       // mostramos el ultimo elemento si no está vacio el conjunto if(i < cont) cout << elementos[i]; cout << "}"; }

int conjunto::operator[](int i) { return elementos[i]; }

bool conjunto::operator==(conjunto c) { int i;       if(cont == c.cont) {               for(i = 0; i < cont; i++) if(!c.esMiembro(elementos[i])) return false; return true; }       return false; }

bool conjunto::operator!=(conjunto c) { return !(*this == c); }

conjunto &conjunto::operator=(conjunto c) { int i;       cont = c.cont; for(i = 0; i < cont; i++) elementos[i] = c.elementos[i]; return *this; }

conjunto conjunto::operator*(conjunto c) { int i;       conjunto res; for(i = 0; i < cont; i++) if(c.esMiembro(elementos[i])) res.agregar(elementos[i]); return res; }

conjunto conjunto::operator+(conjunto c) { int i;       conjunto res; for(i = 0; i < cont; i++) res.agregar(elementos[i]); for(i = 0; i < c.cont; i++) res.agregar(c.elementos[i]); return res; }

conjunto conjunto::operator-(conjunto c) { int i;       conjunto res; for(i = 0; i < cont; i++) if(!c.esMiembro(elementos[i])) res.agregar(elementos[i]); return res; }

Fichero ej03.cpp

/* programa:      ej03 fecha:         11/05/2007 Descipcion:    Usamos clase conjunto.
 * 1) include 
 * 2) include 
 * 3) include 
 * 4) include "conjunto.h"
 * 1) include "conjunto.h"

void main {       conjunto c1,c2,c3,c4,c5; c1.agregar(1); c1.agregar(3); c1.agregar(5); cout << endl << "Conjunto1 = "; c1.imprimir; c1.eliminar(3); cout << endl << "Conjunto1 (tras eleminar 3) = "; c1.imprimir; c2 = c1; c2.agregar(3); cout << endl << "Conjunto2 (c1 + elemento 3) = "; c2.imprimir;

c1.eliminar(1); cout << endl << "Conjunto1 (tras eliminar 1)= "; c1.imprimir; if(c1 == c2) cout << endl << "Los conjuntos c1 y c2 son iguales"; else cout << endl << "Los conjuntos c1 y c2 son desiguales"; c3 = c1 * c2; cout << endl << "Conjunto3 (interseccion c1 y c2) = "; c3.imprimir;

c4 = c1 + c2; cout << endl << "Conjunto4 (union c1 y c2) = "; c4.imprimir;

c5 = c1 - c2; cout << endl << "Conjunto5 (diferencia c1 y c2) = "; c5.imprimir; getch; }