#Programa para calcular relaciones de conjuntos
#importaciones
import random
import random
#listas/conjuntos
A = []
A = []
#menú
t_conjunto = int(
input("¿De que tamaño desea la lista?: ")) #guardara el tamaño de la lista
while t_conjunto < 1:
t_conjunto = int(
input(
"El numero de elementos es muy bajo, porfavor ingrese un número del 1 al 20: "
))
while t_conjunto > 20:
t_conjunto = int(
input(
"El numero de elementos es muy alto, porfavor ingrese un número del 1 al 20: "
))
print("1 --- manual") #marcara si sera de forma manual
print("2 --- aleatorio") #marcara si sera de forma aleatoria
opcion = int(input("Ingrese la opción que desea: ")) #guarda la opcion deseada
while opcion != 1 and opcion != 2:
opcion = int(
input(
"La opción que ingreso no existe, favor de ingresar una opción existente: "
))
t_conjunto = int(
input("¿De que tamaño desea la lista?: ")) #guardara el tamaño de la lista
while t_conjunto < 1:
t_conjunto = int(
input(
"El numero de elementos es muy bajo, porfavor ingrese un número del 1 al 20: "
))
while t_conjunto > 20:
t_conjunto = int(
input(
"El numero de elementos es muy alto, porfavor ingrese un número del 1 al 20: "
))
print("1 --- manual") #marcara si sera de forma manual
print("2 --- aleatorio") #marcara si sera de forma aleatoria
opcion = int(input("Ingrese la opción que desea: ")) #guarda la opcion deseada
while opcion != 1 and opcion != 2:
opcion = int(
input(
"La opción que ingreso no existe, favor de ingresar una opción existente: "
))
#selección de elementos de forma manual
if opcion == 1:
for c in range(1, t_conjunto + 1):
elementos = int(input(
f"Dame valor para el elemento número {c}: ")) #guarda los elementos
while elementos < 1:
elementos = int(
input(
"El número de elemento es muy bajo, favor de agregar un numero del 1 al 50: "
))
while elementos > 50:
elementos = int(
input(
"El número de elemento es muy alto, favor de agregar un numero del 1 al 50: "
))
A.append(elementos) #añade los elementos a la lista
#endfor
#endif
if opcion == 1:
for c in range(1, t_conjunto + 1):
elementos = int(input(
f"Dame valor para el elemento número {c}: ")) #guarda los elementos
while elementos < 1:
elementos = int(
input(
"El número de elemento es muy bajo, favor de agregar un numero del 1 al 50: "
))
while elementos > 50:
elementos = int(
input(
"El número de elemento es muy alto, favor de agregar un numero del 1 al 50: "
))
A.append(elementos) #añade los elementos a la lista
#endfor
#endif
#selección de elementos de forma aleatoria
elif opcion == 2:
for c in range(t_conjunto):
aleatorio = random.randint(1, 50) #guarada elementos de forma aleatoria
A.append(aleatorio) #añade los elementos a la lista
#endfor
#endelif
elif opcion == 2:
for c in range(t_conjunto):
aleatorio = random.randint(1, 50) #guarada elementos de forma aleatoria
A.append(aleatorio) #añade los elementos a la lista
#endfor
#endelif
#imprime el conjunto A
print("El conjunto A = ", A)
print("El conjunto A = ", A)
#calculo de AxA
mylist = A, A
p_cartesiano = [(x, y) for x in mylist[0] for y in mylist[1]]
print("El producto cartesiano (AxA) es =", p_cartesiano)
mylist = A, A
p_cartesiano = [(x, y) for x in mylist[0] for y in mylist[1]]
print("El producto cartesiano (AxA) es =", p_cartesiano)
#menú de operaciones
print("MENÚ DE OPERACIONES")
print("1 ---> Mayor que \n2 ---> Igual \n3 ---> Suma par")
op_menu = int(input("Por favor ingrese el número de la operación deseada: "))
print("MENÚ DE OPERACIONES")
print("1 ---> Mayor que \n2 ---> Igual \n3 ---> Suma par")
op_menu = int(input("Por favor ingrese el número de la operación deseada: "))
#mayor que
if op_menu == 1:
relacion = [], []
tamaño = len(p_cartesiano) #obtiene el tamaño de la lista
print("Los conjuntos de AxA que cumplen con el MAYOR QUE son:")
for i in range(0, tamaño):
X = p_cartesiano[i][0]
Y = p_cartesiano[i][1]
mayor = X, Y
if p_cartesiano[i][0] > p_cartesiano[i][1]:
relacion[0].append(X)
relacion[1].append(Y)
print(mayor)
if op_menu == 1:
relacion = [], []
tamaño = len(p_cartesiano) #obtiene el tamaño de la lista
print("Los conjuntos de AxA que cumplen con el MAYOR QUE son:")
for i in range(0, tamaño):
X = p_cartesiano[i][0]
Y = p_cartesiano[i][1]
mayor = X, Y
if p_cartesiano[i][0] > p_cartesiano[i][1]:
relacion[0].append(X)
relacion[1].append(Y)
print(mayor)
#igual
elif op_menu == 2:
relacion = [], []
tamaño = len(p_cartesiano) #obtiene el tamaño de la lista
print("Los conjuntos de AxA que cumplen con el IGUAL son:")
for i in range(0, tamaño):
X = p_cartesiano[i][0]
Y = p_cartesiano[i][1]
igual = X, Y
if p_cartesiano[i][0] == p_cartesiano[i][1]:
relacion[0].append(X)
relacion[1].append(Y)
print(igual)
elif op_menu == 2:
relacion = [], []
tamaño = len(p_cartesiano) #obtiene el tamaño de la lista
print("Los conjuntos de AxA que cumplen con el IGUAL son:")
for i in range(0, tamaño):
X = p_cartesiano[i][0]
Y = p_cartesiano[i][1]
igual = X, Y
if p_cartesiano[i][0] == p_cartesiano[i][1]:
relacion[0].append(X)
relacion[1].append(Y)
print(igual)
#suma par
elif op_menu == 3:
relacion = [], []
tamaño = len(p_cartesiano) #obtiene el tamaño de la lista
print("Los conjuntos de AxA que cumplen con el SUMA PAR son:")
for i in range(0, tamaño):
X = p_cartesiano[i][0]
Y = p_cartesiano[i][1]
sum_par = X, Y
par = p_cartesiano[i][0] + p_cartesiano[i][1]
if par % 2 == 0:
relacion[0].append(X)
relacion[1].append(Y)
print(sum_par)
elif op_menu == 3:
relacion = [], []
tamaño = len(p_cartesiano) #obtiene el tamaño de la lista
print("Los conjuntos de AxA que cumplen con el SUMA PAR son:")
for i in range(0, tamaño):
X = p_cartesiano[i][0]
Y = p_cartesiano[i][1]
sum_par = X, Y
par = p_cartesiano[i][0] + p_cartesiano[i][1]
if par % 2 == 0:
relacion[0].append(X)
relacion[1].append(Y)
print(sum_par)
print("")
#reflexividad
cont = 0
lenght = len(relacion[0])
for i in range(0, lenght):
n = relacion[0][i] #valor n base que se deb relacionar con otro n
for k in range(0, lenght):
if relacion[1][k] == n and relacion[0][
k] == n: #buscamos los n en la lista los cuales podrian estar asociados con un numero igual a n par que sea reflexiva
cont = cont + 1
n_tamaño = len(A)
if cont >= n_tamaño: #es mayor o igual, ya que a veces se repite la concidencia simétrica. Pero de igual manera es valido debido a que hasta reafirma que existe esa coinicidencia
print("Reflexiva")
else:
print("No Reflexiva")
cont = 0
lenght = len(relacion[0])
for i in range(0, lenght):
n = relacion[0][i] #valor n base que se deb relacionar con otro n
for k in range(0, lenght):
if relacion[1][k] == n and relacion[0][
k] == n: #buscamos los n en la lista los cuales podrian estar asociados con un numero igual a n par que sea reflexiva
cont = cont + 1
n_tamaño = len(A)
if cont >= n_tamaño: #es mayor o igual, ya que a veces se repite la concidencia simétrica. Pero de igual manera es valido debido a que hasta reafirma que existe esa coinicidencia
print("Reflexiva")
else:
print("No Reflexiva")
#simétrica
cont = 0
lenght = len(relacion[0])
for i in range(0, lenght):
a = relacion[0][i] #un valor de la primera casilla sera igual a a
b = relacion[1][i] #un valor de la segunda casilla será igual a b
for k in range(0, lenght):
if relacion[0][k] == b and relacion[1][
k] == a: #debe de haber un valor en la primera casilla que sea igual que b y a su vez que este coincida con un valor de la segunda casilla que sea a
cont = cont + 1 #si la conidicon anterior se cumple, se sumara al contador que nos da a netender cuantas veces se cumple tal conidicon
n_tamaño = len(A)
if cont >= n_tamaño: #es mayor o igual, ya que a veces se repite la concidencia simétrica. Pero de igual manera es valido debido a que hasta reafirma que existe esa coinicidencia
print("Simétrica")
else:
print("No Simétrica")
cont = 0
lenght = len(relacion[0])
for i in range(0, lenght):
a = relacion[0][i] #un valor de la primera casilla sera igual a a
b = relacion[1][i] #un valor de la segunda casilla será igual a b
for k in range(0, lenght):
if relacion[0][k] == b and relacion[1][
k] == a: #debe de haber un valor en la primera casilla que sea igual que b y a su vez que este coincida con un valor de la segunda casilla que sea a
cont = cont + 1 #si la conidicon anterior se cumple, se sumara al contador que nos da a netender cuantas veces se cumple tal conidicon
n_tamaño = len(A)
if cont >= n_tamaño: #es mayor o igual, ya que a veces se repite la concidencia simétrica. Pero de igual manera es valido debido a que hasta reafirma que existe esa coinicidencia
print("Simétrica")
else:
print("No Simétrica")
#transitiva
cont = 0
lenght = len(relacion[0])
for i in range(0, lenght):
a = relacion[0][i]
b = relacion[1][i]
for l in range(0, lenght):
if relacion[0][l] == b:
c = relacion[1][
l] #así se cualcula c, debido a que este en primera instancia debe de estar relacionado con b de maner forzosa
for k in range(0, lenght):
if relacion[0][k] == a and relacion[1][k] == c: #si hay un punto en el que estos dos valores coinicden, se tomara como una coinicdencia transitiva
cont = cont + 1
k = lenght
n_tamaño = len(A)
if cont >= n_tamaño: #es mayor o igual, ya que a veces se repite la concidencia simétrica. Pero de igual manera es valido debido a que hasta reafirma que existe esa coinicidencia
print("Transitiva")
else:
print("No Transitiva")
cont = 0
lenght = len(relacion[0])
for i in range(0, lenght):
a = relacion[0][i]
b = relacion[1][i]
for l in range(0, lenght):
if relacion[0][l] == b:
c = relacion[1][
l] #así se cualcula c, debido a que este en primera instancia debe de estar relacionado con b de maner forzosa
for k in range(0, lenght):
if relacion[0][k] == a and relacion[1][k] == c: #si hay un punto en el que estos dos valores coinicden, se tomara como una coinicdencia transitiva
cont = cont + 1
k = lenght
n_tamaño = len(A)
if cont >= n_tamaño: #es mayor o igual, ya que a veces se repite la concidencia simétrica. Pero de igual manera es valido debido a que hasta reafirma que existe esa coinicidencia
print("Transitiva")
else:
print("No Transitiva")