• Sábado 14 de Diciembre de 2024, 12:11

Autor Tema:  relaciones y funciones en c++  (Leído 3707 veces)

seedark

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
relaciones y funciones en c++
« en: Viernes 11 de Febrero de 2011, 01:16 »
0
Hola, quisiera por favor que me ayudaran a hacer un programa que me permita ingresar una relacion, mostrarla y saber si esa relacion es reflexiva,simetrica,transitiva y de equivalencia, y si no lo fuesen como hacer que lo sean(o sea agregar los pares ordenados que hacen falta); asimismo, como saber si una relacion es funcion y si es inyectiva y biyectiva. por favor es con suma urgencia, le agradeceria mucho si me ayudaran  :(

black_flowers

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: relaciones y funciones en c++
« Respuesta #1 en: Viernes 11 de Febrero de 2011, 01:50 »
0
me suena a teoría de conjuntos y la verdad lo desconozco bastante, de todas formas lo primero me imagino que lo harás con numeros enteros. Como el número de elementos de los conjuntos no va a ser fijo, me imagino que tendrás que utilizar colecciones (así podrás meter todos los elementos que quieras). Luego por ejemplo defines una clase Conjunto (así muy por encima, la sintaxis está mal, es sólo un esquema)

class Conjunto
private Collection Elementos;
public static Union(Conjunto C1, Conjunto C2);
public static Intersecion(Conjunto C1, Conjunto C2);
...


las operaciones las declaras static para poder utilizarlas entre dos conjuntos distintos, es decir que le puedas pasar dos clases distintas a la propia clase como parámetro, si no no podrás operar con dos conjuntos distintos.

Y utilizando las operaciones obtienes si la relación es inductiva o reflexiva o lo que sea que no tengo ni idea.

Pero es ahún más complicado, ya que los elementos deben ser tambien clases, ya que cada elemento (si no me equivoco consta de varios números):

A = { 1 , 2 , 3 }
R = { ( 1 , 1 ) , ( 1 , 3 ) , ( 2 , 2 ) , ( 3 , 2 ) , ( 3 , 3 ) }

El conjunto A, está formado por una colección de 3 elementos
cada elemento consta de un sólo número.
Pero el conjunto B, está formado por una colección de 5 elementos, cada uno de los cuales consta de dos números.
Por lo tanto los elementos deben de ser de esta forma:

Class Elemento
Private Collection Números


Esto es una idea, lo difícil está en implementar las operaciones.

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: relaciones y funciones en c++
« Respuesta #2 en: Viernes 11 de Febrero de 2011, 21:03 »
0
Sería mejor si usas los contenedores estándar de c++. std::set implementa un contenedor para conjuntos que puede contener elementos del tipo que se te antoje:

http://msdn.microsoft.com/en-us/library ... 80%29.aspx

Para las operaciones los algoritmos std te permiten realizar operaciones de conjuntos utilizando iteradores:

http://www.cplusplus.com/reference/algorithm/

Nota: no necesitas que el contenedor sea necesariamente std::set, pero si utilizas otros contenedores tienes que asegurarte que los contenedores estén ordenados de menor a mayor. Si defines tu propia clase elemento tienes que definir el operador menor que "<"

http://en.wikipedia.org/wiki/Strict_weak_ordering.