Ejercicios Integradores Propuestos

29. Mas Ejercicios Propuestos

1) Escribir un programa que pida al usuario un número entero positivo y luego llame a una función que muestre por pantalla todos los números impares desde 1 hasta ese número separados por comas.

________________________________________________________________________________________________________

2) Escribir un programa que permita cargar N datos en una lista. Luego se pide llamar a una función que calcule y muestre el promedio de todos los valores de la lista y la cantidad que superan ese valor promedio.

________________________________________________________________________________________________________

3) Escribir una función que lea 10 números enteros y luego retorne cuántos valores ingresados fueron múltiplos de 3 y cuántos de 5. Tener en cuenta que hay números que son múltiplos de 3 y de 5 a la vez.

________________________________________________________________________________________________________

4) Escribir una función que permita ingresar N valores en una lista y mostrar cual es el elemento menor de la misma y su posición.

________________________________________________________________________________________________________

5) Escribir un programa que solicite un número entero positivo, si se ingresa otra cosa, se deberá mostrar un mensaje indicando un error.

A partir del entero válido, llamar a una función que tenga como argumento ese entero válido y muestre por pantalla sus divisores.

NOTA: si el ingreso es erróneo más de 2 veces, se deberá dar una opción para finalizar el programa.

________________________________________________________________________________________________________

6) Escribir un programa que solicite un número entero mayor que 1, si se ingresa otra cosa, se deberá mostrar un mensaje indicando un error.

A partir del entero válido, llamar a una función que tenga como argumento ese entero válido y, retorne True o False si es o no primo (número natural mayor que 1 que tiene únicamente dos divisores distintos: él mismo y el 1).

NOTA: si el ingreso es erróneo más de 2 veces, se deberá dar una opción para finalizar el programa.

________________________________________________________________________________________________________

7) Escribir un programa que solicite un número entero positivo, si se ingresa otra cosa (letras por ejemplo), no realizar la operación normal del programa.

Luego llamar a una función que tenga como argumento ese entero válido y muestre por pantalla la tabla de multiplicar del mismo, del 1 al 10 como en la escuela.

NOTA: si el ingreso es erróneo, decidir cómo proceder con el programa.

________________________________________________________________________________________________________
8) Escribir una función que permita validar/catalogar una frase ingresada como posible contraseña. De acuerdo al análisis, se devolverá el nivel de seguridad correspondiente.

La función recibe como argumento la contraseña y retorna el nivel de seguridad.

Se considerarán las siguientes pautas:

  • Longitud menor a 6: No válido como clave. Seguridad 0
  • Al menos un carácter en minúscula. Seguridad +1
  • Al menos un carácter en mayúscula. Seguridad +1
  • Al menos un carácter numérico. Seguridad +1
  • Al menos un carácter símbolo. Seguridad +1
  • Longitud mayor a 10. Seguridad +1

Mostrar al finalizar, la clave ingresada seguida del nivel de seguridad (Seguridad 5 es el máximo, se cumplen todos los requisitos).

________________________________________________________________________________________________________
9)  Escribir un programa que solicite un número entero para analizarlo, si se ingresa otra cosa, se deberá mostrar un mensaje indicando un error.

A partir del entero válido, llamar a una función que tenga como argumento ese entero válido y, muestre lo siguiente:

  • Si es par, impar (decidir el caso del 0)
  • Positivo, negativo (decidir el caso del 0)
  • Su factorial, si es posible
  • Si es primo
  • Sus divisores, si no es primo
  • Cantidad de dígitos
________________________________________________________________________________________________________
10)  Realizar una función principal que permita determinar el cómputo y presupuesto de pintura para un edificio:

Se debe permitir que el usuario ingrese por teclado (de a una por vez) las superficies de paredes a pintar. Para el cálculo de consumo de pintura asumir que se utilizan 0.3 litros de pintura por metro cuadrado de pared (0.3 litros/m²). La pintura se adquiere en tachos de 20 litros, con un costo de $6300 cada tacho. La pinturería además ofrece un descuento del 10% al costo total a partir del quinto tacho (por ejemplo, 1 tacho $6300; 5 tachos = 5*$6300=$31500 - 10% = $28350).

En la función principal se debe mostrar un Menú con las siguientes opciones:

    1- Cargar paredes (se deben cargar todas las paredes de una vez)

    2- Mostrar resultados

    f- Finalizar programa

   

Cada punto del menú debe realizarse utilizando otras funciones que realicen lo siguiente:

Si el usuario elige 1 se debe llamar a una función que permita cargar el número de paredes a computar, para luego cargarlas de a una por vez. Se deberán verificar que el dato del número de paredes sea entero y que los datos ingresados de  superficies sean números reales.

 

Si el usuario elige 2 se deberá llamar a una función que permita mostrar por pantalla:

    * Superficie total

    * Cantidad de pintura a utilizar

    * Precio final (mostrar ambos precios, con y sin descuento)

 

Solamente finalizará la función principal al ingresar la letra f.

   

OBSERVACION: Para poder obtener el número de tachos a comprar se debe utilizar la función round(), para conocer cómo funciona: https://www.programiz.com/python-programming/methods/built-in/round


________________________________________________________________________________________________________
11) 

Un aserradero realiza pedidos de cortes de madera, para lo cual, necesita un programa para determinar la cantidad de árboles que se utilizaran.

Primeramente, cargar en un diccionario los 5 tipos de cortes que el aserradero ofrece, con la información de las medidas de los cortes.

Seguidamente, pedir al usuario que ingrese por teclado la cantidad de cada corte que se solicitan en el pedido.

Finalmente, llamar a una función que permita calcular el área total de los cortes solicitados y con esta determinar la cantidad de árboles a talar.

Deberá mostrar por pantalla:

    * Número total de cortes vendidos (todos los tipos)

    * Numero de Arboles a talar

Cortes:


OBSERVACIONES:

    * Asumir que todos los arboles poseen las mismas dimensiones, siendo 20 cm su radio (tomar PI=3,1415)

    * Las medidas de los cortes están en pulgadas, tomar 1 pulgada = 2,54cm

    * Para obtener el número "redondo" de árboles a talar, utilizar la función round(), para saber cómo funciona   https://www.programiz.com/python-programming/methods/built-in/round


________________________________________________________________________________________________________
12) Realizar un programa que permita hacer distintos cálculos básicos, de la misma manera que una calculadora.

Presentar un menú como el siguiente:

    1- Sumar dos números

    2- Restar dos números

    3- Multiplicar dos números

    4- Dividir dos números

    5- Salir

   

Tanto la opción elegida como el par de números a computar deben ser introducidos por teclado.

Luego para cada opción deberá llamar a una función que reciba como argumentos los dos números y retorne el cálculo elegido.

Observaciones: Tener en cuenta que no existe la división por cero (x/0 no existe), si el usuario llegara a ingresar cero para el divisor, se deberá mostrar por pantalla el mensaje "Error, denominador incorrecto" y se deberá pedir el reingreso de dicho valor.


________________________________________________________________________________________________________
13)  Una empresa de transporte de paquetes realiza 10 entregas por día. Cada entrega tiene un costo basado en la distancia de la entrega y el peso del paquete (el costo del envío es el promedio del costo por peso y el costo por distancia).

Realizar un programa que permita almacenar en un diccionario los 10 pares de valores (peso, distancia) y con estos determinar el costo por paquete y el costo diario de la empresa, para esto, basarse en la tabla Nro 1.

La ganancia de la empresa también depende de los envíos, basándose en la tabla Nro 2 para determinar la ganancia diaria de la empresa (la ganancia del envío es la suma de la ganancia por peso y la ganancia por distancia)


Observaciones:

    * Los pesos se deben cargar en kilogramos y las distancias en kilómetros


________________________________________________________________________________________________________
14) Se necesitan cargar datos correspondientes a las ventas realizadas por los vendedores de una farmacia. Los datos necesarios son las ventas correspondientes a los meses del año de cada uno.

Necesitaremos registrar las ventas de esos meses para cada vendedor.

Ejemplo. Enero = 12430, febrero = 23500, marzo = 34550, ...

Las ventas corresponden a valores enteros.

Sugerencia: Utilizar de forma combinada listas, diccionarios y tuplas.

[{'Enero':12430,'Febrero':23500,'Febrero':34550,...},...]

Una vez cargados los datos de las ventas se necesita:

- Ingresar un mes (controlar que sea un valor de mes válido) y llamar a una función que calcule y muestre el promedio de venta para ese mes.

- llamar a una función que calcule y muestre cuantos vendedores lograron una venta promedio mayor a $15000.

- llamar a una función que calcule y muestre cuál fue el mes que más vendió cada vendedor.

- llamar a una función que calcule y muestre cuántos vendedores no registraron ventas en un mes determinado.

________________________________________________________________________________________________________
15) En cierta industria local de procesamiento de papel, se tienen 16 máquinas cortadoras que trabajan con diferentes materiales: material compuesto (papel con capas de film plástico) y papel común. Estas máquinas están divididas por marcas (fabricantes de estas) y cada de estas procesa un tipo de material. La distribución de los equipos es la siguiente:

-8 son de marca Profawa, que trabajan con material compuesto.

-3 son de marca Windmoeller, que usan material común.

-5 son de marca Novaprag y pueden trabajar con material compuesto y común.

Cada equipo procesa como máximo 3000 metros del material que le corresponde durante 8h (1 turno = 8h). La empresa trabaja 3 turnos diarios y por 6 días semanales

Escribir un programa que:

-Cree un diccionario donde se almacene el tipo de máquina y el material que es capaz de procesar.

-Luego llame a una función que permita el ingreso (por parte del supervisor del sector) de cuántos metros enteros logró procesar durante la semana cada máquina (DISCRIMINANDO TIPO DE MÁQUINA Y MATERIAL TRABAJADO). Validar que los datos sean enteros por medio del bloque Try/Except, en caso que el ingreso sea erróneo se deberá pedir reingreso hasta que se ingrese correctamente el campo. 

Una vez cargados estos datos, la función deberá mostrar en pantalla:

-Cantidad de metros de material que se procesó durante la semana (sumando ambos materiales de todas las máquinas).

-Cantidad de metros procesados por cada máquina.

-Promedio de metros procesador por día en los equipos Windmoeller.


________________________________________________________________________________________________________
16)  Se tiene que almacenar el Stock de repuestos de una empresa, los valores a almacenar serán: nombre del repuesto y valores máximo, mínimo y actual del Stock.

El valor máximo y mínimo son parámetros que permiten determinar cuándo debo comprar ese repuesto (si llegué o estoy por debajo del mínimo) y el máximo para saber que tengo stock suficiente.

Definir un diccionario con 3 nombres de claves, para todas las claves (repuestos) con los valores de cada ítem en cero (máx., min, stock)

Luego llamar a una función que permita realizar una carga inicial.

A continuación se presenta un menú permite:

1) Seleccionar y modificar el stock actual (no puede ser negativo)

2) Dar de baja un ítem

3) Dar de alta un ítem (no puede ser negativos los valores de stock)

4) Mostrar quien tiene stock crítico (por debajo del mínimo)

5) Listar los ítems

S o s) Salir.

Para cada ítem del menú llamar a una función que realice lo solicitado.


________________________________________________________________________________________________________
17) Se desea hacer un programa que permita registrar el pesaje de los camiones que ingresan a una planta de Té, para descargar el Té cosechado.

Se propone utilizar un Diccionario que tenga como claves las patentes de los camiones y para cada clave una lista con: Peso al ingresar, Peso al salir, y una variable booleana True/False que indique si el Camión se encuentra adentro del establecimiento o fuera del mismo.

Ver que el peso NO puede ser negativo.

Ver que el peso al Salir DEBE ser menor que al ingresar

Solo se puede cargar el peso al salir si la variable booleana está en el valor adecuado.(que indique que estaba adentro del Establecimiento)

Estas consideraciones mencionadas sirven de control.

Se deberá crear un menú como el siguiente.

1) Ingresar Patente y Peso del Camión al ingresar al Establecimiento

2) Ingresar Peso del Camión al egreso del Establecimiento

3) Lista el Total de Té ingresado.

4) Mostrar la cantidad de camiones.

5) Listar las patentes de los camiones

S o s) Salir.

Para cada ítem del menú llamar a una función que realice lo solicitado.

________________________________________________________________________________________________________
18) Escribir un programa que permita la carga de datos de socios de un club en un diccionario. El diccionario contendrá como clave el número de socio y los demás datos (nombre, DNI, email) en una lista.

La carga se iniciará al correr el programa, cuando cargue los datos, mostrará el diccionario hasta el momento y le preguntará al usuario si desea seguir cargando datos (S/N). El programa finalizará cuando el usuario responda N.

Por cada socio el programa deberá pedir que el usuario ingrese N° de Socio, lo validará con una función y si es válido solicitará el resto de los datos: Apellido, DNI y email.

Utilizará una función para validar DNI y otra para validar email. Si los valores no son válidos pedirá el reingreso del dato incorrecto.

Función para validar N° de Socio: deberá retornar True si es positivo el número ingresado y no está cargado ya en el diccionario.

Sino retornará False.

Función para validar DNI deberá retornar True si es positivo de 7 u 8 dígitos el número ingresado. Sino retornará False.

Función para validar email deberá retornar True si es una cadena de caracteres que contiene el símbolo @. Sino retornará False.

________________________________________________________________________________________________________
19) Un prestamista, quiere llevar un registro de los deudores y de las cuotas de cada uno. Realizar un programa que muestre el siguiente MENU:

1- Cargar Deudor (DNI y Plata prestada)
2- Pagar.
3-Mostrar el total de plata prestada
S o S para Finalizar o Salir del Programa

El programa deberá realizar distintas operaciones según la opción ingresada:

Si ingresa 1:

Deberá cargar en un diccionario el DNI del deudor (clave) asociado al valor de la deuda o préstamo (valor) y lo que va pagando
Tener en cuenta que el DNI puede ser un string y que la deuda es un valor Real positivo. Si el valor de la deuda no es válido , se debe mostrar un mensaje que diga "INGRESO INCORRECTO" y volver pedir ingreso del valor solamente.


Si ingresa 2:

Deberá ingresar un numero de DNI. Si el DNI NO ESTA CARGADO mostrar un mensaje por pantalla que diga "Persona no cargada en el sistema". Si la persona está cargada pedirá ingresar el monto a pagar que no debe ser negativo y no puede ser superior al monto prestado, se debe validar y pedir reingreso en caso de que no cumpla las condiciones. Si ya había efectuado algún pago.. debería acumular este nuevo monto que está pagando. Ejemplo.si ya había pagado 1000 y ahora cargo un pago de 500, debería guardarse en la lista 1500$.

Si ingresa 3:

Deberá mostrar el total de dinero prestado a todos las personas y restar los pagos que efectuaron las personas.

Si ingresa S ó s:

Finalizar el programa con el mensaje "Finalizando..."


Nota: Se recomienda usar un Diccionario que tenga como clave el DNI y como valores una lista con dos valores, el monto prestado y el dinero pagado. Ejemplo:

Clientes={123123:[1200,0], 465876:[1205,289]}

Se debe implementar cada punto del menú con una función y el menú también con una función

________________________________________________________________________________________________________
20)  Una empresa constructora necesita un programa capaz de generar el computo de las mamposterías a realizar en las distintas obras que posee.


Para ello se necesita confeccionar un programa con el siguiente menu:
    1- Cargar obra nueva
    2- Cargar rendimientos por m²
    3- Determinar computo
    F- Salir

Crear previamente una lista vacia llamada "obras", un diccionario vacio llamado "rendimientos" y un diccionario vacio llamado "computo"

Hecho esto, realizar lo siguiente:
Si el usuario ingresa 1: ir cargando en "obras" los metros cuadrados de mamposteria a realizar. La carga finaliza cuando el usuario carga un area=0.

Si el usuario ingresa 2: pedir el rendimiento por metro cuadrado de ARENA, CEMENTO y LADRILLOS. ALmacenar en "rendimientos" como claves los materiales y como valores los
    rendimientos ingresados por teclado.

Si el usuario ingresa 3: determinar la cantidad necesaria de cada material en funcion de los metros cuadrados cargados en "obras". ALmacenar en "computo" como claves los materiales y
    como valores, los obtenidos de cada material, necesarios segun lo calculado. Mostrar por pantalla los consumos de materiales

Si el usuario ingresa F: finalizar el programa

ACLARACIONES:

  • Es necesario ir cargando por pasos: Para poder realizar el paso 3, se debe haber realizado los pasos 1 y 2
  • Es necesario validar los ingresos... si ingresa un valor incorrecto pedir reingresos hasta que se ingrese un valor correcto
  • Considerar el ingreso de F o f para finalizar
  • Realizar el MENU y los puntos 1, 2 y 3 con FUNCIONES.
  • RENDIMIENTOS: 1 m² de mamposteria consume:

             - ARENA -> 0.115 m³ de arena para cada m² de mamposteria
             - CEMENTO -> 15.2 kg de cemento para cada m² de mamposteria
             - LADRILLOS -> 118 ladrillos por cada m² de mamposteria


________________________________________________________________________________________________________
21) 

En una fábrica se registran manualmente ciertos parámetros del entorno de trabajo.
Crear un programa que permita seleccionar desde un menú el parámetro a registrar. Cada parámetro tiene un determinado rango válido, por lo tanto no se deben almacenar ni procesar datos fuera de estos.

MENÚ
1. Ingreso de Temperatura
2. Ingreso de Humedad
3. Ingreso de Presión
4. Ingreso de Operarios (cantidad)
5. Medias
+. Salir


En 1 el rango es de 0 a 60 °C.
En 2 el rango es de 10 a 100%.
En 3 el rango es de 0.8 a 1.2 atm.
En 4 el rango es de 1 a 20.
En 5 se muestra el promedio de cada parámetro, siempre que sea posible.
Con + se sale, otra opción en el menú notifica un error.

Guardar cada dato ingresado en una lista referida a dicho parámetro.

________________________________________________________________________________________________________
22) En una planta potabilizadora de agua se necesita llevar un registro de las dosis de cloro suministradas por empleados en sus respectivos turnos.
Para ello se harán los registros pertinentes en un diccionario que llevará como clave el nombre del empleado.
Los valores del diccionario corresponderán a las distintas dosis de cloro suministradas al agua por cada empleado.
El empleado registrará la cantidad de cloro cada vez que agrege el producto al agua durante su turno (podrá tener varios registros en su turno).
Si no existe registro en el diccionario para un empleado, se creará. En caso de que exista registro para el empleado, se agregará a lo existente.
Los valores serán positivos o cero. Si el empleado no agregó cloro, deberá generar un registro en cero.
Cada empleado podrá tener diferentes cantidades de dosis suministradas.
Menú
1.Registrar dosis
2.Lista de empleados que poseen registros
3.Mostrar el número promedio de dosis suministradas por empleado (número de dosis)
4.Mostrar la cantidad promedio de cloro suministradas por empleado (cantidad de cloro)
9.Sale

Para cada una de las opciones del menú de deberá llamar a la función con el nombre indicado a continuación:
1.carga
2.empleados
3.dosis
4.cloro

El punto 1 deberá solicitar el nombre del empleado y luego registrar la cantidad de cloro dosificada.
El punto 2 mostrará la lista de nombres de empleados que hasta el momento registró dosis
El punto 3 mostrará la cantidad promedio de dosis suministradas por cada empleado
El punto 4 mostrará la cantidad promedio de cloro suministradas por cada empleado
Si no se ha ingresado ningún registro, no se podrá llamar a los puntos 2,3 y 4.
________________________________________________________________________________________________________
23) Se desea gestionar las cuentas de los clientes de un Banco.

Para ello se solicita un programa que deberá crear un diccionario con el número de cliente, (clave) y el Apellido y saldo del mismo.

El programa deberá presentar el siguiente menú:

  1. Cargar cliente
  2. Operación
  3. Registro de operaciones

S-s. Salir

Si elige el punto 1, deberá ingresar por teclado el número de cliente (validar) si existe, deberá mostrar los datos del  mismo. Si no existe se preguntará si se desea agregar. Si la repuesta es si, agregar al diccionario los datos con saldo 0.

Si elige el punto 2 deberá solicitar por teclado un numero de cliente (si existe) y un código de operación. Si es “D” (deposito) permitirá ingresar un valor que es el monto a depositar. Si el código “E” (extracción) permitirá descontar del saldo ese importe. Si se ingresa un nro de cliente no valido mostrar el cartel correspondiente.

Si elige el punto 3 deberá mostrar la cantidad de operaciones D y E que se hicieron y el monto total de las mismas.

El programa finaliza cuando elige s o S. 

Cada uno de los puntos 1,2 y 3 deberá hacerlo con funciones.


________________________________________________________________________________________________________
24)  Generar un código que permita cargar y editar un diccionario con los nombres de los 11 residentes de una vecindad (las claves estarán precargadas).

Los inquilinos estarán precargados, pero podrá editarse uno o todos los nombres de estos. Una vez editado lo solicitado, se mostrará la lista de inquilinos y se consultará si
se quiere seguir editando o si se vuelve al menú
A cada clave le corresponderán 3 servicios: agua, luz e internet. Los 11 inquilinos se distribuyen equitativamente los costos de luz, agua e internet por persona.

Diseñar un código que presente el siguiente menu:

1-Editar lista de inquilinos
2-Ingresar servicios
3-Mostrar montos de cada inquilino
s-Salir


________________________________________________________________________________________________________
25) Se necesita un programa para criptografía básica, debe presentar un menú sencillo:

MENÚ
1. Encriptar
2. Desencriptar
S. Salir

En 1 se pide el ingreso de la frase alfabética a encriptar y luego se muestra el resultado.
En 2 se pide el ingreso de la frase encriptada y luego se muestra la cadena desencriptada.
En S se finaliza el programa. No se deben aceptar otros caracteres en el menú.

Programar una función que recibe 2 argumentos: la cadena a procesar, y un booleano. Si el booleano es True, se encripta; si es False, se desencripta.
El proceso de encriptado consiste en los siguientes reemplazos:

O  ->  0
L  ->  1

Z  ->  2
E  ->  3
A  ->  4
S  ->  5
G  ->  6
T  ->  7
B  ->  8
P  ->  9

El desencriptado corresponde a la operación inversa.

Cómo estándar se encriptan sólo frases alfabéticas en mayúsculas, por lo tanto, si se ingresan letras en minúscula, antes del encriptado las mismas deberán convertirse a mayúsculas. Para ello, programar una función que recibe la cadena fuera del estándar y devuelve la conversión correspondiente.


________________________________________________________________________________________________________
26) Cadena de palabras

Escribir una función que reciba como parámetro una cadena de palabras separadas por espacios y devuelva, como resultado, cuántas palabras de más de cinco letras tiene la cadena dada.

________________________________________________________________________________________________________
27) Procesamiento de telegramas. 

Un oficial de correos decide optimizar el trabajo de su oficina cortando todas las palabras de más de cinco letras a sólo cinco letras (e indicando que una palabra fue cortada con el agregado de una arroba). Además elimina todos los espacios en blanco de más.

Por ejemplo, al texto " Llego mañana alrededor del mediodía " se transcribe como "Llego mañan@ alred@ del medio@".

Por otro lado cobra un valor para las palabras cortas y otro valor para las palabras largas (que deben ser cortadas).

  1. Escribir una función que reciba un texto, la longitud máxima de las palabras, el costo de cada palabra corta, el costo de cada palabra larga, y devuelva como resultado el texto del telegrama y el costo del mismo.
  2. Los puntos se reemplazan por la palabra especial "STOP", y el punto final (que puede faltar en el texto original) se indica como "STOPSTOP".

Al texto:

" Llego mañana alrededor del mediodía. Voy a almorzar "

Se lo transcribe como:

"Llego mañan@ alred@ del medio@ STOP Voy a almor@ STOPSTOP".

Extender la función anterior para agregar el tratamiento de los puntos.


________________________________________________________________________________________________________
28) Vectores
a. Escribir una función que reciba dos vectores y devuelva su producto escalar.
b. Escribir una función que reciba dos vectores y devuelva si son o no ortogonales.
c. Escribir una función que reciba dos vectores y devuelva si son paralelos o no.
d. Escribir una función que reciba un vector y devuelva su norma.
________________________________________________________________________________________________________
29) Dada una lista de números enteros, escribir una función que:
  1. Devuelva una lista con todos los que sean primos. Esta función debe invocar a otra función que reciba cada número y retorne True o False para indicar si es primo o no.
  2. Devuelva la sumatoria y el promedio de los valores.
  3. Devuelva una lista con el factorial de cada uno de esos números.
________________________________________________________________________________________________________
30) Matrices.
  1. Escribir una función que reciba dos matrices y devuelva la suma.
  2. Escribir una función que reciba dos matrices y devuelva el producto.
  3. Escribir una función que opere sobre una matriz y mediante eliminación gaussiana devuelva una matriz triangular superior.
  4. Escribir una función que indique si un grupo de vectores, recibidos mediante una lista, son linealmente independientes o no.
________________________________________________________________________________________________________