2Eva_IT2017_T2 Plantas energía eléctrica

2da Evaluación I Término 2017-2018. Septiembre 2, 2017 /CCPG001

TEMA 2. (50 PUNTOS) Para administrar la nueva matriz energética del Ecuador, se dispone de un diccionario con la información de las plantas de energía y las ciudades que atienden cada una.

Cada ciudad tiene: una tupla con los consumos mensuales (12) del año en megavatios-hora (MWh) y la tarifa de consumo en dólares por megavatio-hora (MWh) que le cobra la planta eléctrica.

Una ciudad puede estar servida por más de una planta eléctrica. No todas las ciudades son servidas por todas las plantas eléctricas.

consumo_energia = {
    'Coca Codo Sinclair': {
        'Quito': { 'consumos':(400, 432, …, 213),'tarifa': 65},
        'Guayaquil': { 'consumos': (120, 55, 32, …, 70),'tarifa': 84},
        ...
        },
    'Sopladora': {
        'Guayaquil':{ 'consumos': (310, 220, 321, …, 200),'tarifa':55},
        'Quito': { 'consumos': (400, 432, …, 587),'tarifa': 79},
        'Loja': { 'consumos': (50, 32, 32, …, 40),'tarifa': 32},
        ...
        },
    ...
    }

Además, dispone del siguiente diccionario con información de ciudad por región :

informacion = {
    'costa': ('Guayaquil', 'Manta', …),
    'sierra': ('Quito', 'Ambato', …),
    'oriente': ('Tena', 'Nueva Loja', …),
    }

Implemente lo siguiente:

  1.  Una función total_anual(consumo_energia, planta, ciudad) que recibe el diccionario consumo_energia, el nombre de una planta y el nombre de una ciudad. La función debe calcular y retornar el total anual de megavatios-hora servido por planta a ciudad. (7 puntos)
  2.  Una función total_plantas_ciudad(consumo_energia, ciudad) que recibe el diccionario consumo_energia y el nombre de una ciudad. La función debe devolver un diccionario cuyas claves corresponden a los nombres de las plantas generadoras que proveen energía a ciudad y los valores corresponden al total anual de megavatios-hora servido por cada planta a ciudad. (13 puntos)
  3.  Una función megavatios_hora(consumo_energia, informacion) que recibe el diccionario consumo_energia y el diccionario informacion . La función retorna el total anual de megavatios-hora consumido por todas las ciudades de la región COSTA. (15 puntos)
  4. Una función facturacion(consumo_energia) que recibe el diccionario consumo_energia y genera un archivo con la facturación total en dólares de los seis primeros meses de cada planta generadora. El archivo resultante se llamará <code?’facturacion.txt’ y tendrá la siguiente estructura: (15 puntos)
Planta,enero,febrero,marzo,...,junio
Coca Codo Sinclair,2903,2145,3010,...,2945
Sopladora,3102,3234,3223,...,3417
…

Referencia: Archivo Original 2Eva_IT2017.pdf

2Eva_IIT2016_T2 País destino para jubilados extranjeros

2da Evaluación II Término 2016-2017. Febrero 14, 2016 /CCPG001

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

Tema 2. Para ayudar a las personas alrededor del mundo a seleccionar un país donde vivir cuando se jubilen, se ofrece información como el  costo de vida, las temperaturas medias por ciudad, etc.jubiladocuenca01

a. Escriba la función cargarDatos(nomFile)
que recibe el nombre de un archivo con las ciudades y sus métricas y retorna un diccionario con la estructura mostrada a continuación:

Ejemplo: "datos.txt" contiene:

Cuenca,temperatura,22
Guayaquil,canastaBasica,630
Cuenca,canastaBasica,457
Bogota,canastaBasica,321
Bogota,temperatura,20
Guayaquil,temperatura,29

cargarDatos("datos.txt") retorna un diccionario con la siguiente estructura:
datos=
{"Guayaquil":{"canastaBasica":630, "temperatura":29},
 "Cuenta":   {"canastaBasica":457, "temperatura":22},
  ...}

Nota: para el ejercicio solo existen dos métricas posibles: “canastaBásica” y “temperatura” y todas las ciudades tienen ambas métricas.

b. Escriba la función metricaPais(datos, paises) que recibe el diccionario datos, generado con la función anterior, y el diccionario paises que tiene como clave el nombre del país y como valor la lista de ciudades para ese país. Esta función calcula el valor promedio de cada métrica por país y retorna un diccionario cuya clave es el país y cuyo valor es otro diccionario con los promedios por métrica.

paises={'Ecuador':{'Cuenca','Guayaquil'},'Colombia':{'Bogotá'}, ...}

Por ejemplo, para Guayaquil y Cuenca que pertenecen al mismo país se calcula el promedio de las métricas: "canastaBasica" y "temperatura", cuyo resultado se lo asigna al país Ecuador

{"Ecuador":  {"canastaBasica":542.50, "temperatura":25.5},
 "Colombia": {"canastaBasica":321, "temperatura":20},
 ...}

c. Escriba la función generaPaises(promedios, metrica, minimo, maximo)  para buscar los paises que en su promedios cumplen con los valores entre mínimo y máximo para una métrica deseada.

Los argumentos son promedios, con la estructura del diccionario generado en la función anterior, una cadena denominado métrica que puede ser “canastaBasica” o “temperatura” y un valor mínimo y un máximo para dicha métrica. El resultado será un archivo con el nombre de la métrica”.csv” que contiene: los países y el valor de la métrica buscada separados por coma.

Usando el ejemplo anterior:
generaPaises(proms, "temperatura", 23, 26) 

"temperatura.csv" tendrá el siguiente contenido:
Ecuador,temperatura, 25.5

Referencia: “Ecuador, a la cabeza de los mejores países para los jubilados“. 2 de Enero, 2015, www.eluniverso.com,

Archivo original 2Eva_IIT2016.pdf

2Eva_IT2016_T2 Distancias entre ciudades de Ecuador

2da Evaluación I Término 2016-2017. Agosto 30, 2016 /CCPG001

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

TEMA 2. (60 PUNTOS) Las distancias entre ciudades del Ecuador conectadas directamente por una carretera están almacenadas en el archivo ‘Ecuador_Distancias.txt‘ con el siguiente formato:

Ciudad_de_Partida|Ciudad,Distancia|Ciudad,Distancia|...|Ciudad,Distancia

Por ejemplo:
Ambato|Azogues,280|Babahoyo,212|Pedernales,318
Azogues|Pedernales,555|Babahoyo,125
Pedernales|Ambato,318|Azogues,555
Babahoyo|Ambato,250
...

Implemente las siguientes funciones:

a) cargarDatos(nombreArchivo) que recibe el nombre del archivo como string y retorna el diccionario distancias con el siguiente formato:

distancias = {
 'Ambato':{'Azogues':280,'Babahoyo':212,'Pedernales':318},
 'Azogues':{'Pedernales':555,'Babahoyo':125},
 'Babahoyo':{'Ambato':250} 
 }

b) ciudadesCercanas(distancias, km) donde distancias es el diccionario generado en el literal a) y km es un valor entero positivo . La función retorna una lista de tuplas con todos los pares de ciudades conectadas directamente por una carretera que estén a una distancia menor o igual que el valor de km.
La tupla incluye los valores de ‘ciudad1’, ‘ciudad2’, ‘distancia’ que las separa. Por ejemplo:

>>> ciudadesCercanas(distancias,300) 
retorna: 
[('Ambato','Azogues',280), ('Ambato','Babahoyo',212), 
 ('Azogues','Babahoyo',125), ('Babahoyo','Ambato',250)]

c)  guardarCiudadesCercanas(distancias, listaKms) que recibe el diccionario de distancias y una lista con varias distancias en kilómetros, para generar un archivo con las ciudades separadas a máximo dicha distancia. Por ejemplo:

>>>guardarCiudadesCercanas(distancias, [300, 100, 250]) 
genera los siguientes tres archivos: 
ciudades300.txt, 
ciudades100.txt, 
ciudades250.txt.

El archivo ‘ciudades300.txt’ tendría el siguiente contenido:

Ambato,Azogues,280
Ambato,Babahoyo,212
Azogues,Babahoyo,125
Babahoyo,Ambato,250

 

3Eva_IT2016_T1 Costo de mensaje

3ra Evaluación I Término 2016-2017, Septiembre 13, 2016 /CCPG001

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

Tema 1. mensaje de texto sms(40 puntos) Una empresa de telecomunicaciones determina el costo para enviar un mensaje como el acumulado de los valores de cada palabra diferenciadas por tamaño y tipo:

  • una palabra corta tiene máximo M caracteres,
  • una palabra larga tiene mas de M caracteres,
  • una palabra especial es un verbo en infinitivo, es decir, palabras terminadas en ‘ar‘, ‘er, ‘ir‘ , sin importar su tamaño.

Implemente las siguientes funciones:

a) cargarDatos(nombreArchivo) que recibe el nombre del archivo que en lineas separadas especifica: el tamaño M, el costo de las palabras cortaslargas e infinitivos. La función abrirá el archivo y retorna un diccionario de la forma:

nombreArchivo='costos.txt'
10
0.2
0.5
0.3

>>> cargarDatos('costos.txt')
retorna:
{'M':10, 'corta':0.2, 'larga':0.5, 'infinitivo':0.3}

b) calcularCostos(datos, nombreArchivo) es una función que determina el costo total de un mensaje guardado en un archivo.
La variable datos corresponde al diccionario de datos generado en el literal a) y un nombre de archivo con el texto de varias lineas correspondiente al mensaje guardado. Las palabras de cada línea se encuentran separadas por espacios y un punto ‘.’ al final del mensaje como único signo de puntuación presente. El punto ‘.’ no deberá ser considerado para determinar el costo de esa última palabra.

c) cambiarMensaje(datos, nombreArchivo1, nombreArchivo2) es una función que baja el costo del mensaje al modificarlo mediante:

  • el recorte de las palabras largas a M-1 caracteres y  colocando ‘#‘ al final.
  • el reemplazo el punto final ‘.’ con la palabra especial ‘END’.

La función recibe el diccionario de datos generado en el literal a) y dos nombres de archivos: nombreArchivo1 que contiene el mensaje y nombreArchivo2 que es el el archivo que se crea (guarda) con el mensaje modificado.

Referencia: Archivo original 3Eva_IT2016.pdf

3Eva_IIT2016_T1 Facturar llamadas telefónicas

3ra Evaluación II Término 2016-2017, Marzo 7, 2017 /CCPG001

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

TEMA 1. (45 Puntos)  La información de los clientes de una compañía telefónica ubicada en Guayaquil se encuentra  en el archivo llamado clientes.csv.

El archivo está estructurado de la siguiente manera:

Cédula,NúmeroTeléfono,Sector,MinutosLlamadaNacional|MinutosLlamadaInternacional,Estado

Por ejemplo: clientes.csv

1278112648,04-443288,Norte,12|30,Activo
1278112648,04-383056,Sur,50|15,Activo
1302511926,04-325363,Este,90|12,Activo
1174253723,04-430419,Oeste,30|30,Cortado
2061722895,04-356539,Norte,17|40,Cortado
1729478396,04-437289,Centro,4|2,Activo
1174253723,04-324426,Norte,0|9,Cortado
1174253723,04-283497,Norte,15|27,Activo

Para procesar la información se requiere:

1. Crear una función llamada obtenerClientes(nombreArchivo) la cual recibe como parámetro el nombre del archivo con los clientes de la empresa, y devuelve un diccionario con la siguiente estructura:

{
'1174253723': 
{'04-324426':{'sector':'Norte','nac':0,'estado':'Cortado','inter':9},
'04-430419':{'sector':'Oeste','nac':30,'estado':'Cortado','inter':30}
'04-283497':{'sector':'Norte','nac':15,'estado':'Activo','inter':27}},
'1302511926': 
{'04-325363':{'sector':'Este','nac':90,'estado':'Activo','inter':12}},
'1278112648':
{'04-443288':{'sector':'Norte','nac':12,'estado':'Activo','inter':30},
'04-383056':{'sector':'Sur','nac':50,'estado':'Activo','inter':15}},
'1729478396':
{'04-437289'{'sector':'Centro','nac':4,'estado':'Activo','inter':2}},
'2061722895':
{'04-356539':{'sector':'Norte','nac':17,'estado':'Cortado','inter':40}}
}

2. Crear una función llamada generarFactura(dclientes) la cual recibe como parámetro el diccionario de clientes generado en el literal anterior, y genera un archivo por cada cliente, cuyo nombre es la cédula del cliente, y el contenido corresponde a los valores a pagar por cada cliente. La estructura del archivo es la siguiente:

Archivo 1278112648.txt
Empresa Telefonica de Guayaquil
Cliente :1278112648
Detalle Deuda:
04-443288 nac:0.36 inter:1.5 total:1.86
04-383056 nac:1.5 inter:0.75 total:2.25
Total a Pagar:4.11

Para calcular los valores a pagar considere las siguientes
tarifas:
Tarifa Nacional: 0.03 el minuto
Tarifa internacional:
● Menos de 60 min: 0.05 el minuto
● Entre 60 y 90 min: 0.04 el minuto
● Más de 90 min: 0.03 el minuto

3. Crear una función llamada estadisticaSector(dclientes,sector) que recibe como parámetro el diccionario de clientes generado en el literal 1 y el sector, y devuelve un diccionario con el promedio de minutos de llamadas nacionales e internacionales que han realizado los números telefónicos del sector en estado ‘Activo’.

Por ejemplo:
>>> estadisticaSector(dclientes,”Norte”)

Respuesta:
{'Nacionales': 13.50, 'Internacionales': 28.50}

Referencia: Archivo original 3raEvaIIT2016.pdf

3Eva_IIT2011~T4 Juego de palabras desde archivo

3ra Evaluación II Término 2011-2012, Febrero 2012 /FIEC

Tema 4. (40 puntos) Escriba un programa para jugar al “ahorcado”, las palabras se encuentran en un archivo, debe seleccionarlas aleatoriamente y presentarla colocando subguiones en lugar de las letras.

Solicitar al usuario que ingrese una letra y si se encuentra una coincidencia mostrar la letra en la posición que le corresponde (las veces que sea encontrada), hasta que el usuario adivine la palabra.

Al jugador se le mostrará al inicio del juego el número de oportunidades que tiene, que corresponde al doble del total de las letras de la palabra.

Si no logra adivinar se mostrará el mensaje “ahorcado” y la palabra completa.

ahorcado.txt

examen
caminante
montana
programador
cero

salida por pantalla (con la palabra montana)

_ _ _ _ _ _ _
Tiene 14 oportunidades, ingrese una letra:
a
_ _ _ _ a _ a

Referencia: 2Eva_IT2005_T3 Adivina palabra (ahorcado)

3Eva_IIT2011~T3 Archivos de profesores y estudiantes en seminarios

3ra Evaluación II Término 2011-2012, Febrero 2012 /FIEC

Tema 3. (20 puntos) Suponga que una empresa de capacitación necesita hacer un programa en C que lleve el control sobre los estudiantes registrados en los seminarios que ofrece.

Considere que la información de los profesores y estudiantes se encuentran almacenados en dos archivos diferentes con el siguiente formato:

profesores.dat
CEDULA,NOMBRE,APELLIDO

A continuación un ejemplo:

profesores.dat 
0956789023,Julio,Soto
1032874567,Luis,Pezo
0921121984,Vanessa,Yanez
...

y para los estudiantes:

estudiantes.dat
CEDULA,NOMBRE,APELLIDO,CODIGO_PARALELO_REGISTRADO

con datos de ejemplo:

estudiantes.dat
1098265372,Javier,Uquillas,1
0876324532,Eduardo,Cedeño,1
0732234432,Luis,Caceres,5
...

Implemente:

a. El procedimiento void muestraInfoProfesor(FILE *f,char *ced), que recibe un puntero al archivo “profesores.dat” y una cadena de caracteres con el numero de cédula de un profesor. Esta función debe buscar en el archivo el profesor mediante el número de cédula y mostrar en pantalla su nombre y apellido.

b. El procedimiento void muestraEstudiantes(FILE *f,int paralelo), que recibe un puntero al archivo “estudiantes.dat” y el paralelo del cual desea listar los estudiantes. El listado debe mostrar el Apellido seguido del nombre del estudiante, uno debajo de otro.

3Eva_IIT2015~T2 Biciespol, archivo de préstamos.txt

3ra Evaluación II Término 2015-2016, Febrero 2016 /FIEC

Tema 2. (25 puntos) El departamento de Bienestar Estudiantil de la ESPOL ha implementado un nuevo servicio de rentas de bicicletas para los estudiantes que desean movilizarse internamente en el campus universitario.

El departamento de Bienestar Estudiantil está interesado en conocer la acogida del servicio por parte de los estudiantes, para ello cuenta con un archivo de datos en texto plano, el cual tiene la información de todas las rentas de bicicletas que se han dado hasta el momento.

El archivo tiene el siguiente formato:

Matrícula|Nombre|# de bicicleta|Hora Inicio|Hora Fin|Multa

A continuación se ofrece un ejemplo del contenido del archivo:

200501010|JUAN PEREZ|10|15|16|2.0
200502020|LUIS CASTRO|24|14|15|3.50
200502020|LUIS CASTRO|30|11|12|0.0
200501010|JUAN PEREZ|9|9|10|1.50
200503030|JUAN PEREZ|27|8|9|4.00

Implemente la función almacenarRentasEstudiantes(nombreArchivo, prefijoSalida, horaInicio, horaFinal), la cual recibe el nombre del archivo donde se encuentra la información de los alquileres y un rango de horas.

Para el rango de horas especificadas, la función calcula las veces que cada estudiante ha prestado una bicicleta, la cantidad y monto total de multas y almacena los resultados de cada estudiante en archivos individuales a sociados con cada uno de ellos.

Los archivos de salida tienen por nombre prefijoSalida_numeroMatricula.txt . Un ejemplo de la llamada a la función sería la siguiente:

almacenarRentasEstudiantes(“rentas.txt”, “reporte”, 11, 16)
reporte_200501010.txt
1|1|2.0
reporte_200502020.txt
2|1|3.50

Referencia: 2Eva_IIT2015_T4 biciespol, prestamos de bicicletas

2Eva_IT2015_T2 Diccionario electrónico

2da Evaluación I Término 2015 – 2016, Septiembre 08, 2015 /ICM00794

Tema 2 (35 puntos). Un diccionario electrónico para estudiantes principiantes de español-quichua usará una lista de palabras entre ambos idiomas, semejante al tema anterior.

https://www.turismo.gob.ec/
https://www.turismo.gob.ec/

El estudiante creará su diccionario mientras aprende nuevas palabras, las que añadirá a su diccionario y lo guardará en un archivo.

Se usarán traducciones simples de una palabra o una frase sin considerar la gramática, tan solo sustituyendo la palabra traducida si se encuentra en su diccionario.

Al traducir, para indicar el modo se usará un indicador numérico:

(1) quichua a español y
(2) español a quichua.

Un Ejemplo para traducir una frase en modo (2), se tiene:
 Español: 'ciencia y tecnología al servicio del país'
 Quichua: 'ciencia pash iyayku man mañay pak mamallakta'

Escriba un programa con el menú presentado para ejecutar las tareas descritas.

Menú:
1. Traducir palabras
2. Traducir una frase
3. Añadir palabras al diccionario
4. Guardar archivo del diccionario
5. Abrir archivo del diccionario
6. Salir

Nota: Use la función del tema anterior. Considere que la frase no tiene signos de puntuación

Rúbrica: Menú (5 puntos), caso 3, 4 y 5 (5 puntos c/u), usar función (5 puntos), separar palabras (3 puntos), traducir frase (7 puntos)

3Eva_IT2015_T4 Bomberos para incendios forestales

3ra Evaluación I Término 2015-2016, Septiembre 22, 2015 /ICM00794

Tema 4. (30 puntos) Para gestionar los grupos de bomberos que acudieron a la provincia de Pichincha para enfrentar los incendios forestales se requiere elaborar un programa con el menú mostrado.

Menú:
1. Registrar bombero
2. Asignar grupos
3. Mostrar nombres de un grupo
4. Guardar datos
5. Leer datos
6. Salir

Al inicio del día se registrará cada bombero en orden de llegada en la siguiente tabla:

Presentados
cedula nombre bombero provincia
1234567890 Juan Pérez 234 17 (Pichincha)
2345678901 Pedro López 91 9 (Guayas)

Por facilidad, la provincia usa un código numérico.

Para asignar y mostrar los grupos se indica el número m de incendios forestales a combatir; use la función del tema anterior enviando un arreglo con los datos de bombero y provincia, el resultado será la matriz de grupos asignados.
El listado de bomberos en un grupo se obtiene usando la opción 3, por lo que se ingresa el número del grupo para mostrar el nombre y cédula de los bomberos asignados.

Rúbrica: Menú (5 puntos), manejar registros (5 puntos), crear arreglo para función (5 puntos), usar función anterior (5 puntos), opción 3 (5 puntos), opción 4 y 5 (5 puntos)