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_IIT2011~T2 Función para problema de las 8 torres

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

Tema 2. (20 puntos) El Problema de Torres es un pasatiempo en el que se colocan ocho torres en un tablero de ajedrez sin que estas se amenacen.

La torre amenaza a aquellas piezas que se encuentren en su misma fila o columna.

En la matriz las torres están representadas por el 1 y los espacios vacios por el 0.

1
1
1
1
1
1
1
1

A Ud. Se le ha solicitado implementar:

La función int tableroValido(int Tablero[8][8]) la cual indica si el tablero es válido o no verificando que no existe ninguna torre que este amenazando a otra. Para el caso de ser válido retorna 1 sino 0.

3Eva_IIT2015~T4 Prueba de escritorio, listas

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

Tema 4. (10 puntos)

1. Analice el siguiente código y seleccione la respuesta correcta, justifique su respuesta.

L = [10,30,50,70]
L += L[1:3]
print(L)

a. [10,30,50,70,50,70]
b. [10,30,50,70,30,50]
c. [10,30,50,70]
d. Error: fuera de rango
e. Ninguna de las anteriores

2. Analice el siguiente código y seleccione la respuesta correcta, justifique su respuesta.

d = [0, 1, 2, 3, 4, 5, 6]
e = d
e[-1]= 50
d[2] = 40
print(d)

a. [0, 1, 40, 3, 4, 5, 6]
b. [0, 1, 40, 3, 4, 5, 50]
c. [0, 1, 2, 3, 4, 5, 50]
d. Error: fuera de rango
e. Ninguna de las anteriores

3Eva_IIT2015~T3 Juego planta bombas

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

Tema 3. (40 puntos) Implemente las siguientes funciones:

a. colocarMinas(campo, cantidad, orientacion) que recibe un arreglo tipo matriz llamado campo , cantidad y orientación.  Luego, genere cantidad de minas de longitud 3 con orientación horizontal o vertical (dada por el parámetro correspondiente) y las coloque en posiciones aleatorias en el campo. Las minas se representan con números consecutivos entre 1 y cantidad. Las minas no pueden salirse del tablero ni intersectarse con otras minas.

El siguiente ejemplo representa un campo de 10×10, con 5 minas en orientación horizontal.

campo
4 4 4
1 1 1
.
.
.
3 3 3
.
.
5 5 5
2 2 2

b. avance(campo, puntoInicio, puntoFin) que recibe dos tuplas con coordenadas y retorna los puntos ganados (valor positivo) o perdidos (valor negativo) de acuerdo a las siguientes reglas:

  • Si el puntoFin en campo NO contiene una mina: todas las minas adyacentes a puntoInicio se destruyen y gana un punto por cada mina destruida.
  • Si el puntoFin en campo contiene una mina: la mina del puntoFin (solo esa) se destruye y el jugador pierde 3 puntos.

En el siguiente ejemplo, el usuario decide moverse del punto A al punto B, las minas en negritas serán eliminadas

campo
4 4 4
1 1 1
. A
. B
.
3 3 3
.
.
5 5 5
2 2 2

Con estas funciones escriba un programa que realice las siguientes tareas:

  • Crear el campo de 10×10
  • Colocar 5 minas en el campo horizontalmente
  • Generar aleatoriamente una posición original válida para el usuario. Esta posición es válida si está vacía y dentro del campo.
  • Pedir al usuario las coordenadas destino (fila,columna) y actualizar los puntos de acuerdo a las reglas listadas anteriormente.
  • El juego termina cuando el usuario destruye todas las minas o ingresa (‐1,‐1) como coordenadas de destino.
  • Al final debe mostrar cuántas casillas con minas destruyó, cuántos puntos acumuló, cuántas casillas con partes de una mina quedan en el tablero y cuántos tipos de minas quedan en el tablero.

Del ejemplo, el usuario destruyó 2 casillas con minas, hizo 2 puntos, existen 13 casillas con minas en el tablero y quedan 5 tipos de minas.


Referencia: 3Eva_IT2006_T4 Juego planta bombas (buscaminas)

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

3Eva_IIT2015~T1 etiquetas tendencia como función

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

Tema 1. (25 puntos) Dado un diccionario con la siguiente estructura:

{"@usuario1":["contenido tuit1 #hashtag1", 
              "contenido #hashtag2 tuit2"],
 "@usuario2":["#hashtag2 contenido tuit n #hashtag n "]

Nota: un tuit tiene uno o más hashtags y éstos pueden estar en cualquier parte del mensaje.

Elabore una función trendTopics(diccionario) que reciba un diccionario con la estructura anterior y retorne un segundo diccionario de hashtags con el número de veces que fueron utilizados en los tuits.

Luego, elabore un programa que muestre por pantalla los Hashtags y sus contadores. Asuma que existe la función crearDiccionario() que retorna un diccionario con los tuits de acuerdo a la estructura presentada arriba.

Ejemplo de salida:

#hashtag2 2
#hashtag1 1
#hashtagn 1

Referencia: 2Eva_IT2016_T1 Tendencias en Twitter

3Eva_IT2015~T4 Prueba de escritorio, diccionario

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

Tema 4. (10 puntos) Analice el código fuente de los programas que se muestran a continuación. Seleccione la respuesta correcta y justifique brevemente su respuesta.

a. ¿Cuál será la salida del siguiente programa?

foo = {1:'1', 2:'2', 3:'3'}
del foo[1]
foo[1] = '10'
del foo[2]
print(len(foo))

A. 1
B. 2
C. 3
D. 4

b. ¿Cuál será la salida del siguiente programa?

x = True
y = False
z = False

if (not(x) or y):
    print(1)
elif (not(x) or not(y) and z):
    print(2)
elif (not(x) or y or not(y) and x):
    print(3)
else:
    print(4)

A. 1
B. 2
C. 3
D. 4