3Eva_IT2019_T1 Producción en hacienda

3ra Evaluación I Término 2019-2020, Septiembre 13, 2019

Tema 1. (60 puntos)
Asuma que tiene un archivo con la información de los productos agrícolas cosechados por una hacienda durante todos los días del año 2018.

La información se encuentra en el siguiente formato:

codigo1,codigo2,codigo3,...,codigoN
codigo_producto,fecha(dd-MMM-aaaa),cantidad_cosechada

Ejemplo:

100034,100312,100021,...,201245,432198 
codigo_producto,fecha(dd-MMM-aaaa),cantidad_cosechada
100034,02-ENE-2018,5
100021,02-ENE-2018,15
100021,07-ENE-2018,11
432198,20-ENE-2018,12
...

Nota: La primera línea del archivo contiene los códigos de todos los productos agrícolas presentes en el resto del archivo, mientras que la segunda línea es la cabecera del archivo.

Implemente las siguientes funciones:

1.1. crearMatriz(nomArchivo) que recibe el nombre del archivo con la información de las cosechas de un año; y devuelve un vector con todos los códigos de productos y una matriz con los totales (valores enteros) de cosechas para cada producto (filas) durante cada mes del año (columnas). Ejemplo:

[ENE,FEB,MAR,ABR,MAY,JUN, JUL,AGO,SEP,OCT,NOV,DIC]
Cod =[
[100034],
[100312],
[100021],
...
[201245],
[432198]]
M=[
[32, 12, 45,  67, 84, 114,  21, 57, 99, 84, 74, 65],
[43, 15, 67,  21, 77,  95, 110, 78, 93, 63, 56, 32],
[65, 78, 32, 155, 32,  73,  87, 91, 22, 65, 82, 17],
...
[39, 71, 63,  32, 57,  85,  83, 12, 11, 15, 34, 65],
[55, 51, 54,  67, 64,  63,  56, 52, 71, 77, 87, 32]]

1.2. mesMasRentable(M) que recibe la matriz de cosechas M . Esta función retorna el nombre del mes en que más se cosechó y el total de cosecha de ese mes.

1.3. altoBajos(M, k) que recibe la matriz de cosechas M y un entero k. La función retorna el nombre de todos los meses que tienen una cosecha total con al menos k unidades por debajo de la cosecha del mejor mes del año.

1.4. mejorTrimestre(M, Cod, codigo) que recibe la matriz de cosechas M, el vector de códigos Cod y el codigo de un producto. La función debe retornar el nombre del trimestre («T1», «T2», «T3» o «T4») en el que más se cosechó el producto con codigo .

1.5. mejoresNProductos(M, Cod, n) que recibe la matriz de cosechas M, el vector de códigos Cod y un número entero n . La función debe retornar los códigos de los n productos más cosechados durante el año.

1.6. promedioProductos(M, Cod, codigos) que recibe la matriz de cosechas M, el vector de códigos Cod y una lista con códigos de productos. La función retorna el promedio de los totales de cosecha entre los códigos dados en la lista.

7. porCategoria(M, Cod, categorias) que recibe la matriz de cosechas M , el vector de códigos Cod y un diccionario categorias con el siguiente formato:

categorias = {'legumbres':[100034,201245,...],
              'verduras': [100021,200013,...],
               ... }

La función deberá escribir un archivo por cada categoría con el siguiente formato: Archivo_legumbres.txt

codigo,ENE,FEB,MAR,ABR,MAY,JUN,JUL,AGO,SEP,OCT,NOV,DIC
100034,32,12,45,67,84,114,21,57,99,84,74,65
201245,39,71,63,32,57,85,83,12,11,15,34,65
...

El nombre del archivo debe ser el mismo de la categoría dentro del diccionario categorias y terminar con “.txt”.

Rúbrica: numeral 1.1 (8 puntos), numeral 1.2 (5 puntos),numeral 1.3 (8 puntos), numeral 1.4 (9 puntos), numeral 1.5 (6 puntos), numeral 1.6 (9 puntos), numeral 1.7 (15 puntos).


Referencia: Producción de brócoli crece 300% desde 2000
https://www.eluniverso.com/2005/03/24/0001/9/E2FB1BA3C6DC41C899E8B87A7F2FBD36.html

2Eva_IT2019_T1 Indicador de innovación por ciudad

2da Evaluación I Término 2019-2020, Agosto 30, 2019

Tema 1. (50 puntos) Asuma que tiene la matriz M cuyas filas representan ciudades del mundo, las columnas representan indicadores de innovación y cada celda contiene el valor que tiene la ciudad para un indicador.

Además, cuenta con el diccionario indicadores con el siguiente formato:

indicadores = {'Num_empresas':{'columna':17,
                               'puntaje':{(0,9):1,
                                          (10,19):2,
                                          ...}
                               },
               'Num_coworkings':{'columna':5,
                                 'puntaje':{(0,15):10,
                                            (16,30):15,...}
                                 },
               ...
               }

Finalmente, cuenta con un arreglo ciudades con los nombres de las ciudades en el mismo orden que aparecen en las filas de la matriz M.

Implemente las siguientes funciones:

a. obtenerPuntajes(M, indicadores, indicador) que recibe la matriz M , el diccionario de indicadores , y el nombre de un indicador; y devuelve un vector con el puntaje obtenido por cada ciudad en ese indicador.
Por ejemplo: Si una ciudad, tiene un valor de 15 para el indicador 'Num empresas', obtendrá 2 como puntaje.

b. crearMatrizPuntajes(M, indicadores) que recibe la matriz M y el diccionario de indicadores; y retorna una matriz de puntajes( P) cuyas filas representan ciudades, las columnas representan indicadores y el valor de cada celda representa el puntaje obtenido por esa ciudad en ese indicador.

c. topCiudades(P, minPuntaje, ciudades, K) que recibe una matriz de puntajes P, un puntaje mínimo, el arreglo con los nombres de las ciudades y un entero K; y retorna un arreglo con los nombres de las ciudades cuyo total de puntos en los primeros K indicadores (columnas) sea al menos minPuntaje.

d. numEmpresas(M, P, indicadores, N) que recibe la matriz M ,una matriz de puntajes P, el diccionario indicadores y un entero N. Encuentre las N ciudades con mayor puntaje total y retorne el número promedio de empresas (indicador 'Num empresas') de esas ciudades.

Rúbrica: literal a (14 puntos), literal b (12 puntos), literal c (10 puntos), literal d (14 puntos)


Referencias: https://www.distrito100.com/, https://www.eluniverso.com/noticias/2019/04/21/nota/7292456/guayaquil-da-primer-paso-busca-innovacion/

 

3Eva_IIT2018_T2 Jugadores Sudamericano Sub-20

3ra Evaluación II Término 2018-2019. 15-Febrero-2019 /CCPG001

Tema2. (60 puntos) Asuma que tiene un archivo por cada partido jugado en el Sudamericano Sub-20. Cada archivo tiene información con datos de los jugadores que participaron en el partido con el siguiente formato:

Ejemplo:
Pais,Jugador,Tarjetas_Amarillas,Tarjetas_Rojas,Goles,Minutos,KM_recorridos
...
Ecuador,Jose Cifuentes,1,0,0,75,6.3
Uruguay,Sebastian Caceres,2,1,0,90,7
Ecuador,Leonardo Campana,0,0,1,87,10
...

Implemente las siguientes funciones:

1.  actualizaDiccionario(nomArchivo,dic) que recibe el nombre de un archivo con los datos del partido y actualiza el diccionario de totales por jugador que tiene el siguiente formato:

dic = {'Ecuador': {'Leonardo Campana': {'TA': 0,
                                        'TR': 0,
                                        'Goles': 1,
                                        'Minutos': 87,
                                        'KM': 10.0}},
       'Uruguay': {'Sebastian Caceres': {'TA': 2,
                                         'TR': 1,
                                         'Goles': 0,
                                         'Minutos': 90,
                                         'KM': 7.0}
                   }
       }

2. buenDeportista(jugador, dic) que recibe el nombre de un jugador y el diccionario de totales y determina si ese jugador puede ser catalogado como un «buen deportista»; la función retorna «True» o «False» . Un jugador se considera «buen deportista»si ha recibido menos de dos tarjetas por cada 270 minutos de juego.

3.JugadorAtleta(jugador,dic) que recibe el nombre de un jugador y el diccionario de totales, determinando si el jugador ha corrido como mínimo el promedio de lo que han corrido los jugadores de su pais y ha anotado al menos un gol; la función retorna «True» o «False»

4. paisBuenasPracicas(pais,dic) que recibe el nombre de un país y el diccionario de totales, analizando si ese país puede ser nominado para el «Best Practices award». Un país puede ser nominado a este premio si TODOS los jugadores del país pueden ser catalogados como «buen deportista». La funcion retorna «True»o «False»

Escriba un programa que:

5. Forme el diccionario de totales a partir de una lista con los nombres de los archivos de datos de los partidos. Asuma que tiene una lista para esta tarea:

L = ['br-ur.csv', ...,'ec-vn.csv']

6. Muestre los siguiente datos por país:

a. Porcentaje de jugadores atletas. es decir e número de jugadores atletas dividido para el total de jugadores del país.

b. Goles por Km recorrido, es decir el número de goles del país dividido para el total de Km recorridos por todos sus jugadores

7. Muestre los países nominados para el «Best Practices award

8 Muestre la nómina de jugadores atletas con su respectivo país.

Rúbrica: numeral 1(15 puntos), numeral 2 (9 puntos), numeral 3 (9 puntos), numeral 4( 9 puntos), numeral 5(2 puntos), numeral 6 (5 puntos cada literal), numeral 7 (3 puntos), numeral 8 (3 puntos).


Referencia: Ecuador clasifica al mundial de Polonia sub-20 tras empate de Colombia y Uruguay. https://www.eluniverso.com/deportes/2019/02/10/nota/7183619/ecuador-clasifica-mundial-polonia-sub-20-tras-empate-colombia

 

2Eva_IIT2018_T3 Hielo y especies en Ártico-Diccionario

2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

Sección 3. Función para crear diccionario

Para el siguiente numeral, asuma que tiene un diccionario con los nombres de todas las especies del ártico en el siguiente formato:

dicEspecies = {codigo_especie:nombre_especie}

5. crearDiccionario(mHielo, mAnimales, dicEspecies) que recibe una matriz de hielo, una matriz de animales y el diccionario de las especies del Ártico.
La función crea un diccionario con los datos anteriore similar al mostrado:

dic = {'densidad hielo':{'Q1':0.75,
                         'Q2':0.11,
                         'Q3':0.55,
                         'Q4':0.47},
       'Especies':{ 1:51,
                    2:6,
                    ...
                    67:93}
       }

Para ‘Especies’ usar {especie:poblaciónTotal}

Rúbrica: Numeral 5 (20 puntos)

2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar

2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

(Editado para tarea, se manteniene el objetivo de aprendizaje)
Sección 2
. Descripción del Problema y funciones con matrices (pregunta 2,3,4)

Para el resto del examen considere lo siguiente:

Cuadrantes de la matriz

Las matrices pueden ser divididas en cuadrantes, cuatro subregiones de igual tamaño,  denominados:
Q1, Q2, Q3 y Q4
como se muestra en la gráfica:

Asuma que existen las siguientes funciones:

a.  cuadrantes(matriz) que recibe una matriz y devuelve un vector con los cuadrantes de la matriz [Q1, Q2, Q3, Q4], que son a su vez matrices (arreglos).

b. poblacionEspecie(mAnimales, especie) que recibe una matriz de animales, el código de una especie y determina la cantidad total de animales de esa especie en cada uno de los cuadrantes. El resultado es un vector con el siguiente formato [pQ1, pQ2, pQ3, pQ4].


Realice las funciones:

2. densidadHielo(mHielo) que recibe una matriz de hielo y determina la densidad de hielo para cada cuadrante. El resultado es un vector con el  formato [dQ1, dQ2, dQ3, dQ4].
La densidad de un cuadrante es la cantidad total de sus celdas con valor uno (1) dividido para el número total de celdas del cuadrante.

3. especieDominante(mAnimales) que recibe una matriz de animales y encuentra la especie dominante por cuadrante.
El resultado es un vector con los códigos de la especie que más se repite en cada cuadrante: [eQ1, eQ2, eQ3, eQ4]

4. migracionEspecie(mAnimales2009, mAnimales2019, especie) que recibe la matriz de animales del 2009, la matriz de animales del 2019 y el código de una especie. La función debe retornar un vector [a,b] con dos valores:

a.  El primer valor corresponde al cuadrante donde hubo mayor población de animales de la especie en el 2009.
b.  El segundo valor corresponde al cuadrante donde hay mayor población de animales de la especie en el 2019.
Los valores son  los códigos de los cuadrantes: ‘Q1’, ‘Q2′,’Q3’, ‘Q4’

Rúbrica: numeral 2 (10 puntos), numeral 3 (20 puntos), numeral 4 (15 puntos),

2Eva_IIT2018_T4 Hielo y especies en Ártico-programa

2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

Sección 4. Programa que usa las funciones de la sección 1, 2, 3 (preguntas 6-9)

implemente un programa principal que:

6. Forme las matrices a partir del archivo ‘artico2009-2019.txt

7. Muestre por pantalla el código de las especies que en el 2019 son comunes (se repiten) para los cuadrantes Q1, Q2 y Q4 pero que no existan en Q3.

Los siguientes dos numerales se resuelven juntos.

8. Determine si ha habido migración de la especie con código 3. Existe migración si el cuadrante con mayor población en el 2009 y 2019 son diferentes .

9. Una posible explicación para la migración de una especie puede ser el deshielo. Entonces, si existió migración (de la especie con código 3) del cuadrante con mayor población en el 2009 (Qx) al cuadrante con mayor población en el 2019 (Qy), muestre la diferencia (positiva o negativa) de densidad de hielo del 2009 al 2019 para el cuadrante Qx.

Calcule la diferencia con la siguiente fórmula:

Diferencia = densidad_Qx_2019 - densidad_Qx_2009

Por ejemplo:

Si migracionEspecie retorna (‘Q1’, ‘Q4’), la diferencia será la densidad de hielo en el 2009 del cuadrante ‘Q1’ menos la densidad de hielo en el 2019 del mismo cuadrante ‘Q1’.

Rúbrica: numeral 6 (1 punto), numeral 7 (9 puntos), numeral 8 (1 punto),numeral 9 (9 puntos)

2Eva_IIT2018_T1 Hielo y especies en Ártico-Archivo

2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

(Editado para tarea, se manteniene el objetivo de aprendizaje)
Sección 1
. (pregunta 1) Descripción del Problema y lectura de datos desde archivo

La World Wide Fund for Nature (WWF) se encuentra realizando el #TenYearChallenge del Ártico. http://diarioecologia.com/el-deshielo-del-artico-aumenta-la-mortalidad-del-oso-polar/

Referencia: https://www.worldwildlife.org/stories/imperiled-polar-bears-face-new-threat-in-alaska-s-arctic-national-wildlife-refuge

Para esto dispone de información sobre la cantidad de hielo y población de animales de diversas especies durante los años 2009 y 2019 en un archivo con el siguiente formato:

Número de filas
Número de columnas
Año,fila,columna,hielo,especie

Ejemplo: ‘artico2009-2019.txt

22
14
Año,fila,columna,hielo(0/1),especie
...
2009,14,8,1,9
...
2019,5,7,0,3

Implemente las siguientes funciones:

  1. crearMatriz(nomArchivo) que recibe el nombre del archivo con los datos de la WWF y retorna una tupla que contiene las siguientes cuatro matrices:
mhielo2009: Cantidad de hielo 2009
1 0 0 1
0 1 1 1
1 0 1 0
1 1 1 0
0 1 0 1
1 1 1 0
mhielo2019: Cantidad de hielo 2019
1 0 0 1
0 1 0 1
1 0 1 0
1 0 1 0
0 1 0 1
0 0 1 0
mAnimales2009: Especies de animales 2009
1 2 4 4
2 5 5 3
1 3 9 1
1 1 4 2
4 22 4 7
1 1 14 4
mAnimales2019: Especies de animales 2019
3 2 4 1
0 11 3 5
1 0 67 1
2 22 3 2
13 13 2 3
3 0 1 0

En las matrices de hielo cada valor uno (1) en una celda representa la presencia de hielo.

En las matrices de animales cada celda representa la presencia de un animal de una especie usando una cierta codificación, como la del ejemplo:

0: No hay animal 
1: Lobo ártico 
2: Oso Polar 
3: Reno 
4: Foca 
5: ...

Rúbrica: numeral 1 (15 puntos): abrir y cerrar archivo, procesar lineas de tamaño de matriz, crear matrices, procesar líneas de datos de matriz, llenar matrices.

1Eva_IIT2018_T3 Compras ‘Black Friday’

1ra Evaluación II Término 2018-2019, Noviembre 23, 2018. CCPG001

(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 3. (50 puntos) El Black Friday inaugura la temporada de compras navideñas con significativas rebajas en muchas tiendas minoristas y grandes almacenes. https://www.profesionalreview.com/2018/09/24/tiendas-donde-comprar-black-friday/

Sucede después de la celebración de Acción de Gracias en Estados Unidos.

Suponga que posee los datos de los productos de una tienda en los siguientes arreglos:

C: códigos de todos los productos (cadenas de caracteres)
P: precios en dólares para cada uno de los productos (valores con decimales).
D: descuentos asociados a cada producto (enteros entre 0 y 100)
S: nombre de la sección donde se encuentra cada producto (cadenas de caracteres)

Se requiere implementar las siguientes funciones:

  1.  calcularPrecio(codigo,C,P,D) que recibe un código y los arreglos C,P,D y retorna el precio final del producto, aplicando el descuento correspondiente.
    Para calcular el precio final, aplique las siguiente fórmula:
    precio_final = precio - precio*\frac{descuento}{100}
  2. calcularTotal(compras,C,P,D) que recibe una lista de compras con los códigos de los productos, los arreglos C,P,D y aplicando todos los descuentos calcula el valor total a pagar, .
  3. hallarSecciones(compras,C,S) que recibe una lista de compras con los códigos de los productos, los arreglos C y S y determina las secciones que deberán visitar durante las compras. La lista de visitas no tiene elementos repetidos.
  4. descuentosPorSección (D,S) que recibe los arrelgos D y S y retorna una tabla con el nombre de cada sección y la cantidad de productos que tienen más del 50% de descuento.

Realice un programa que inicialmente muestre una tabla con las secciones y cantidad de productos con más del 50% de descuento. Luego para las compras, permita ingresar los códigos de los productos, procese y muestre el valor total a pagar y las secciones que necesita visitar. El usuario terminará de ingresar las compras escribiendo ‘fin’.

Ejemplos de arreglos:

C = ['CTR-2424', 'SKU-5675', 'PSS-4542']
P = [ 56.65, 32.00, 22.22]
D = [0, 50, 10]
S = ['Ropa Niños', 'Juguetes', 'Hombre']

Rúbrica: numeral 1 (5 puntos), numeral 2 y 3 (10 puntos c/u), numeral 4 (15 puntos). programa (10 puntos)


Referencias:

3Eva_IT2017_T2 Huracanes en Atlántico Norte

3ra Evaluación I Término 2017-2018. Septiembre 16, 2017 /CCPG001

(Editado para tarea, se mantiene el objetivo de aprendizaje)

TEMA 2 (45 puntos). Para el Atlántico Norte, los meteorólogos registran los parámetros que describen a los huracanes .

La tabla muestra los datos en una matriz M para cada año y nombre asignado al huracan:

El encabezado de la matriz se describe en el diccionario huracanes que contiene el año (clave tipo entero) y los nombres  de huracanes en ese año (texto en tupla).

huracanes = {..., 
             2015:('Ana', ..., 'Kate'),
             2016:('Alex', ..., 'Otto'),
             2017:('Ariene', ..., 'Harvey','Irma', ...), 
             ... }

Los nombres no se repiten y se almacenan en el mismo orden que en la matriz M.

Por la velocidad del viento, los huracanes se categorízan en :

categoria Velocidad del Viento
1 menor a 100 km/h
2 100 a 150 km/h
3 150 a 200 km/h
4 200 a 250 km/h
5 mas de 250 km/h

Desarrolle los siguientes literales:

a) Elabore la función total_marejada(M, cat) que retorna el total de marejadas en metros causadas por los huracanes que tengan categoria cat.

b) Implemente la función indices_año(huracanes, año) que retorna una tupla con los índices de columna donde empieza y termina año en la matriz M.

c) Escriba la función velocidad_superior(M, huracanes, año) que retorna la cantidad de huracanes en año que tienen la Velocidad de Desplazamiento (Vd) superior a la Velocidad de Desplazamiento promedio del año dado como parámetro.

d)  Realice la función ACE(M, huracanes, año) que devuelve la cantidad de energía liberada por todos los huracanes de la temporada año.
Esto se calcula usando:

CantidadEnergia = 10 ^{-4} (VV_{1}^{2} + VV_{2}^{2} \text{+ ... + }VV_{n}^{2} )

Donde VVi es la Velocidad de Viento (en km/h) de cada huracan.

e) Implemente la función lluvia(M, huracanes, nombre_huracan, año) que devuelve la cantidad de lluvia en centímetros (cm) generada por el nombre_huracan en ese año.

Rúbrica: literales a,c y d (11 puntos cada uno), literal b (5 puntos), literal e (7 puntos)

Referencias:
– Irma: ¿cómo y quién decide el nombre de los huracanes?, http://www.bbc.com/mundo/noticias-37591575,
http://www.infobae.com/america/mundo/2017/09/07/por-que-bautizan-a-los-huracanes-con-nombres-de-personas/
– ¿Cómo se clasifican los huracanes en el Atlántico?, https://es.wikipedia.org/wiki/Escala_de_huracanes_de_Saffir-Simpson


Ejemplo:

M = np.array([[20, 30, 19, 15, 18],
              [89,195,120,150,240],
              [65,165,100,110,200],
              [30, 49, 35, 89, 67],
              [ 5, 1.8,  1,  2,  5]])

huracanes = {2016:('Alex', 'Otto'),
             2017:('Ariene', 'Harvey','Irma'),
             }
Se obtiene:
---
categorias:  [1 3 2 2 4]
Marejadas cat[2]:  3.0
indices:  [2, 4]
velocidad superior:  2
Energia liberada:  0.091
lluvia en mm:  89.0

Referencia: Archivo original 3Eva_IT2017.pdf

1Eva_IIT2015~T3 Recorrido turístico en ciudad

1ra Evaluación II Término 2015-2016, Marzo 7, 2016 /CCPG1001

Tema3. (45%) El programa “Conoce Guayaquil” le ayudará a escoger una opción para recorrer los principales atractivos turísticos de la ciudad durante un día.

Hay 8 actividades disponibles, pero solo es posible realizar 4 de ellas durante el día.

Código Actividad Tiempo requerido en horas Costo en $
1 Malecón 2000 2 6.50
2 Las Peñas 3 6
3 BarcoPirata Morgan 2 12.25
4 Recorrido Panorámico 2 12
5 Museos 3 10
6 Parque Histórico 4 10
7 Mall del Sol 3 6
8 IMAX 3 8.15

Para iniciar el programa se debe especificar una colección de listas llamada catalogo, que contenga la información de cada actividad: nombre, tiempo y costo.

Luego, el programadebe seleccionar aleatoriamente 4 actividades para formar un tour, que es una lista con los códigos de 4 actividades diferentes a realizarse.

El tour debe satisfacer las siguientes especificaciones:

  • El recorrido deberá empezar exactamente a las 10:00
  • El tiempo total no debe ser mayor a 12 horas
  • La visita al Parque Histórico debe iniciarse máximo a las 14:00 porque cierran a las 18:00
  • El recorrido por el Río Guayas en el Pirata Morgan debe iniciarse a partir de las 14:00
  • La función de cine en el IMAX puede ser a las 12:00, 15:00 ó 18:00
  • Al museo se puede entrar hasta las 18:00

Las demás actividades pueden realizarse en cualquier horario

Se requiere implementar:

  1. La función generarCatalogo() que llena una lista con el nombre, tiempo y costo de todas las actividades disponibles, y la retorna.
  2. La función generarTour() que llena una lista con 4 números aleatorios diferentes entre 1 y 8, correspondientes a las actividades a realizarse.
  3. La función duracionActividad() que recibe el catalogo y el código que se desea consultar, devolviendo la duración de la actividad a la que pertenece el código dado.
  4. La función inicioActividad() que recibe el código de la actividad y la hora actual (en formato hh) y devuelva la hora de inicio más cercana para la actividad especificada. Si dado el código y la horaactual no es posible iniciar la actividad requerida,retorne -1.
  5. La función verificarTour() que recibe el catálogo y el tour generado y determina si es posible realizar esa combinación de actividadesde acuerdo a las condiciones explicadas arriba.
  6. La función calcularCostoTotal() que recibe el catálogo y el tour generado, y devuelve el costo total de las actividades a realizar.
  7. La función calcularTiempoTotal() que recibe el catálogo, el tour generado y devuelve la cantidad de horas utilizadas para las 4 actividades.
  8. Un programa que use las funciones implementadas anteriormente para:
    a. Generar el catálogo
    b. Generar un tour válido
    c. Mostrarpor pantalla el tour generado: sus actividades, horarios, tiempo total de recorrido y costo total, por ejemplo:
10:00 Visita a Museos
14:00 Río Guayas en el Pirata Morgan
16:00 Recorrido Panorámico
18:00 Compras en Mall del Sol

El tour comenzaráa las 10:00 horas y 
terminará a las 21:00 horas.
Tiempo total de recorrido: 11 horas
Costo total: $ 40.25

Elaborado por C. Vaca, C. Falcones, I. Carrera, J. Magallanes, M. Calderón, E. Cruz y R. Bonilla