Sei sulla pagina 1di 8

Alumnos:

Ramrez Tavera Randy


Garza Mndez Vanessa
Garca Gonzlez Luis Mario
Torres Balbuena Marco Antonio
Rodrguez Ramrez Miguel ngel
Profesor: Rivera Clavel Carlos

Universidad de la Repblica
Mexicana
Ingeniera en Sistemas
computacionales
Grupo: SC0501V
Durante el curso reforzamos la teora que se tenia anteriormente, asi que estas partes que
vimos, como la implementacin de clases, mejoramiento de las funciones. Y esto fue aplicado al
siguiente proyecto.
Este proyecto ser algo mas dirigido a el tronco comn de la carrera, implementando relacin
entre conjuntos que se vio en nuestros primeros cuatrimestres.
Se nos pidi generar un programa que sobre el relacin de conjuntos. Todo esto se hara en C++.
Todo esto usando clases y funciones.
El programa como ya es costumbre se dividio en 3 partes.
1.- El archivo .h
2.-El .cpp
3.-El main

Archivo .h
Aqui se encuentra la clase, en este caso llamada ConjuntoEnteros, con su respectivo constructor
y todos los mtodos que se usaron
Codigo
#ifndef ConjuntoEnteros_H
#define ConjuntoEnteros_H

#include <string>
#include <iostream.h>
#include <conio.h>
#include <set>
using namespace std;
class ConjuntoEnteros{
//atributos
set<int> a, b;
public:

int aux;
//constructor
ConjuntoEnteros(){ //inicia constructor basio


}//termina constructor basio
//metodos
void ingresaconjunto();
void leerConjunto(set<int> *, int);//lee los conjuntos ingresados
void imprimirConjunto(set<int> *); //imprime en pantalla los conjuntos
set<int> opUnion(set<int> *, set<int> *); //hace la union de los conjuntos ingresados
set<int> opInterseccion(set<int> *, set<int> *); //da los valores que tienen interseccion
set<int> opDiferencia(set<int> *, set<int> *); //da la diferencia de los conjuntos
int biyectiva();//metodo que evalua para ver si es biyectiva con la funcion f(x)=x^2
void cardinalidad();//imprime la carnalidad del dominio y el contra dominio
};
#endif


Parte cpp:
En esta parte se colocaron todas las llamadas de los mtodos o funciones contenida en
nuestro .h
Codigo:
#include "conjuntoEnteros.h"
/******************************************************************************/
void ConjuntoEnteros::ingresaconjunto(){
cout << "Cuantos elementos son en el conjunto A: ";
cin >> aux;
leerConjunto(&a, aux);

cout << endl << "Cuantos elementos son en el conjunto B: ";
cin >> aux;
leerConjunto(&b, aux);
cout << endl << "Conjunto A:";
imprimirConjunto(&a);
cout << "Conjunto B:";
imprimirConjunto(&b);
cout << "A union B:";
imprimirConjunto(&opUnion(&a, &b));
cout << "A interseccion B:";
imprimirConjunto(&opInterseccion(&a, &b));
cout << "A - B:";
imprimirConjunto(&opDiferencia(&a, &b));
cout << "B - A:";
imprimirConjunto(&opDiferencia(&b, &a));
}
/******************************************************************************/
void ConjuntoEnteros::leerConjunto(set<int> *conj, int cantidad) {
for (int i = 0; i < cantidad; ++i) {
int elemento;
cout << "Escribe un elemento: ";
cin >> elemento;
conj->insert(elemento);
}
}
/******************************************************************************/
void ConjuntoEnteros::imprimirConjunto(set<int> *conj) {
set<int>::iterator it;

for (it = conj->begin(); it != conj->end(); it++) {
cout << " " << *it;
}

cout << endl;
}
/******************************************************************************/
set<int> ConjuntoEnteros::opUnion(set<int> *a, set<int> *b) {
set<int> unionSet;
set<int>::iterator it;

for (it = a->begin(); it != a->end(); it++) {
unionSet.insert(*it);
}

for (it = b->begin(); it != b->end(); it++) {
if (unionSet.count(*it) == 0) {
unionSet.insert(*it);
}
}

return unionSet;
}
/******************************************************************************/
set<int> ConjuntoEnteros::opInterseccion(set<int> *a, set<int> *b) {
set<int> interseccion;
set<int> *mayor, *menor;
set<int>::iterator it;

if (a->size() > b->size()) {
mayor = a;
menor = b;
} else {
mayor = b;
menor = a;
}

for (it = menor->begin(); it != menor->end(); it++) {
if (mayor->count(*it) > 0) {
interseccion.insert(*it);
}
}

return interseccion;
}
/******************************************************************************/
set<int> ConjuntoEnteros::opDiferencia(set<int> *a, set<int> *b) {
set<int> diferencia;
set<int>::iterator it;

for (it = a->begin(); it != a->end(); it++) {
if (b->count(*it) == 0) {
diferencia.insert(*it);
}
}

//system("PAUSE");

return diferencia;
//system("PAUSE");
}
/******************************************************************************/





Main:
Codigo:
#include <cstdlib>
#include <iostream>
#include "conjuntoEnteros.h"

using namespace std;

int main(int argc, char *argv[])
{
ConjuntoEnteros c;
c.ingresaconjunto();

system("PAUSE");
return EXIT_SUCCESS;
}
El curso fue relativamente teorico, fue un repaso que se vio en el anterior curso, con algunas
cosas nuevas como el set y el get, que se uso para ahorrar un poco de cdigo.
Al momento se puso algo complicado ya que los programas generados no eran como para campo
laboral, pero ayudo bastante a tener una mejor lgica de programacin que es lo importante.