You are on page 1of 4

Algortmica I (2012) Prof.

Alcides Acua

Licenciatura en Ciencias Informticas Primer Examen Parcial

Tema 1 (60 puntos) Se tienen los siguientes datos de las ventas de entradas para los conciertos a realizarse en la ciudad de Asuncin: fecha_recaudacion, codigo_punto_venta, codigo_concierto, cantidad_entradas y total_recaudado. Los conciertos se identifican por un cdigo con los siguientes valores: 1- Paul McCartney, 2- Noel Gallagher, 3Rock and Roll All Stars, 4- Serrat y Sabina y 5-Ivete Sangalo. Los puntos de venta tambin se identifican tambin por un cdigo con los siguientes valores: 1- Shopping del Sol, 2- Shopping Mcal. Lopez, 3- Mall Excelsior, 4- Shopping Villa Morra, 5- Banco Itau, 6- Aqu pago. Elabore un programa que lea los datos de las ventas de entradas e imprima lo siguiente: a) Total recaudado por cada punto de venta b) Nombre de los puntos de venta de mayor y menor recaudacin c) Ranking de conciertos por entradas vendidas (Cantidad de entradas por concierto ordenada de mayor a menor recaudacin) Ejemplo de entrada:
fecha_recaudacion - codigo_punto_venta - codigo_concierto - cantidad_entradas - total_recaudado 15/03/2012 1 1 90 38.000 15/03/2012 1 2 34 10.000 15/03/2012 1 3 42 26.000 15/03/2012 2 1 90 38.000 15/03/2012 2 2 16 29.500 16/03/2012 1 3 132 125.000 16/03/2012 1 2 15 43.000 16/03/2012 2 1 14 38.000 16/03/2012 2 3 32 35.000

El programa debera imprimir lo siguiente:


Punto Punto Punto Punto Punto Punto de de de de de de venta: venta: venta: venta: venta: venta: 1-Shopping del Sol - Monto recaudado: 242.000 2-Shopping Mcal. Lopez - Monto recaudado: 140.500 3-Mall Excelsior - Monto recaudado: 0 4-Shopping Villa Morra - Monto recaudado: 0 5-Banco Itau - Monto recaudado: 0 6-Aqu pago - Monto recaudado: 0

Punto de venta de mayor recaudacin: 1-Shopping del Sol Punto de venta de menor recaudacin: 6-Aqu pago Ranking de Concierto: Concierto: Concierto: Concierto: Concierto: conciertos por entradas vendidas 3-Rock and Roll All Stars - Cantidad de entradas: 206 1-Paul McCartney - Cantidad de entradas: 194 2-Noel Gallagher - Cantidad de entradas: 65 4-Serrat y Sabina - Cantidad de entradas: 0 5-Ivete Sangalo - Cantidad de entradas: 0

Observaciones: - El ltimo registro de ventas debe tener 0 (cero) en el campo codigo_concierto - En el caso en que existan ms de un punto de venta con la mayor o menor recaudacin, se debe imprimir cualquiera de ellos

Algortmica I (2012) Prof. Alcides Acua programa primer_parcial_tema_1 const CANT_CONCIERTOS = 5 CANT_PUNTOS_VENTA = 6 var Entradas : vector[CANT_CONCIERTOS] numerico Recaudaciones : vector[CANT_PUNTOS_VENTA] numerico NOMBRE_CONCIERTOS : vector[CANT_CONCIERTOS] cadena NOMBRE_PUNTOS_VENTA : vector[CANT_PUNTOS_VENTA] cadena inicio cls() NOMBRE_CONCIERTOS = {"Paul McCartney", "Noel Gallagher", "Rock and Roll All Stars", "Serrat y Sabina", "Ivete Sangalo"} NOMBRE_PUNTOS_VENTA = {"Shopping del Sol", "Shopping Mcal. Lopez", "Mall Excelsior", "Shopping Villa Morra", "Banco Itau", "Aqu pago"} leer_ventas() imp_recaudaciones() imp_ranking_conciertos() fin subrutina leer_ventas() var fecha_Entradas: cadena codigo_punto_venta, codigo_concierto, cantidad_entradas, total_recaudado : numerico inicio Recaudaciones = {0, ...} Entradas = {0, ...} imprimir ("Ingrese datos de las ventas:\n") leer (fecha_Entradas, codigo_punto_venta, codigo_concierto, cantidad_entradas, total_recaudado) mientras (codigo_concierto <> 0) { Entradas[codigo_concierto] = Entradas[codigo_concierto] + cantidad_entradas Recaudaciones[codigo_punto_venta] = Recaudaciones[codigo_punto_venta] + total_recaudado imprimir ("Ingrese datos de las ventas:\n") leer (fecha_Entradas, codigo_punto_venta, codigo_concierto, cantidad_entradas, total_recaudado) } fin }

Licenciatura en Ciencias Informticas Primer Examen Parcial subrutina imp_recaudaciones() var i, mayor_Entradas, menor_Entradas : numerico pv_mayor_Entradas, pv_menor_Entradas : numerico inicio mayor_Entradas = 0 menor_Entradas = 0 desde i = 1 hasta CANT_PUNTOS_VENTA { imprimir ("Punto de venta: ", i, "-", NOMBRE_PUNTOS_VENTA[i], " - Monto recaudado: ", Recaudaciones[i], "\n") si (Recaudaciones[i] > mayor_Entradas) { mayor_Entradas = Recaudaciones[i] pv_mayor_Entradas = i } si (menor_Entradas == 0) { menor_Entradas = Recaudaciones[i] pv_menor_Entradas = i } si (Recaudaciones[i] < menor_Entradas) { menor_Entradas = Recaudaciones[i] pv_menor_Entradas = i } imprimir ("\nPunto de venta de mayor recaudacion: ", pv_mayor_Entradas, "-", NOMBRE_PUNTOS_VENTA[pv_mayor_Entradas], "\n") imprimir ("Punto de venta de menor recaudacion:", pv_menor_Entradas, "-", NOMBRE_PUNTOS_VENTA[pv_menor_Entradas], "\n") fin subrutina imp_ranking_conciertos() var i, j : numerico V_AUX : vector[CANT_CONCIERTOS] numerico aux1, aux2 : numerico inicio desde i = 1 hasta CANT_CONCIERTOS { V_AUX[i] = i } desde i = 1 hasta CANT_CONCIERTOS-1 { desde j = i hasta CANT_CONCIERTOS { si (Entradas[j] > Entradas[i]) { aux1 = Entradas[i] Entradas[i] = Entradas[j] Entradas[j] = aux1 aux2 = V_AUX[i] V_AUX[i] = V_AUX[j] V_AUX[j] = aux2 } } } imprimir ("\nRanking de conciertos por entradas vendidas\n") desde i = 1 hasta CANT_CONCIERTOS { imprimir ("Concierto: ", V_AUX[i], "-", NOMBRE_CONCIERTOS[ V_AUX[i] ], " - Cantidad de entradas :", Entradas[i], "\n") } fin

Algortmica I (2012) Prof. Alcides Acua

Licenciatura en Ciencias Informticas Primer Examen Parcial

Tema 2 (40 puntos) Elabore un programa que lea el nombre de usuario y su contrasea e imprima el nivel de seguridad de la contrasea ingresada de acuerdo a la siguiente clasificacin: Alta: contiene al menos 8 caracteres compuestos por nmeros, letras maysculas, letras minsculas y caracteres especiales: ()*+,-./ Media: contiene al menos 8 caracteres compuestos por nmeros, letras maysculas y letras minsculas Baja: contiene al menos 8 caracteres compuestos por nmeros y letras maysculas o minsculas Muy baja: no corresponde a ninguna de los grupos anteriores Ejemplo de entrada y la salida que se debe arrojar: Usuario: oacosta contrasea: Pablito123 --------------->> Nivel de seguridad: Media Usuario: amartinez contrasea: Protx.332 --------------->> Nivel de seguridad: Alta Usuario: pcano contrasea: pablito123 --------------->> Nivel de seguridad: Baja Usuario: pcano contrasea: PABLITO123 --------------->> Nivel de seguridad: Baja Usuario: ecenturion contrasea: em$456 --------------->> Nivel de seguridad: Muy baja Observaciones: - Valores ASCII de letras maysculas A -> 65 y Z -> 90 - Valores ASCII de letras minsculas a -> 97 y z -> 122 - Valores ASCII de nmeros 0 -> 48 y 8 -> 57 - Valores ASCII de caracteres especiales ( -> 40 y / -> 47 Adems, el programa deber imprimir una clave numrica interna que estar formada por la concatenacin de los valores ASCII de cada carcter ubicado en una posicin impar de la contrasea. Ejemplo: La clave numrica interna para la contrasea Pablito123 sera 809810511150 donde 80 es el valor ASCII de la letra P, 98 de la b, 105 de la i, 111 de la o y 50 del 2.

Algortmica I (2012) Prof. Alcides Acua programa primer_parcial_tema_2 var usuario, contrasena : cadena inicio cls() imprimir ("Ingrese nombre de usuario :") leer(usuario) imprimir ("Ingrese contrasena :") leer(contrasena) imprimir ("Nivel de severidad: ") si ( strlen (contrasena) > 7 and tiene_letra_may(contrasena) and tiene_letra_min(contrasena) and tiene_numero(contrasena) and tiene_car_especial(contrasena) ) { imprimir ("Alta") sino si ( strlen (contrasena) > 7 and tiene_letra_may(contrasena) and tiene_letra_min(contrasena) and tiene_numero(contrasena) ) imprimir ("Media") sino si ( strlen (contrasena) > 7 and (tiene_letra_may(contrasena) or tiene_letra_min(contrasena) ) ) imprimir ("Baja") sino imprimir ("Muy baja") } imprimir ("\nClave numerica interna:", obt_clave_num_interna(contrasena) ) fin subrutina tiene_letra_may (cad: cadena) retorna logico var ok: logico i: numerico inicio ok = FALSE desde i=1 hasta strlen(cad) { si ( ord(cad[i]) >= 65 and ord(cad[i]) <= 90 ) { ok = TRUE } } retorna ok fin

Licenciatura en Ciencias Informticas Primer Examen Parcial subrutina tiene_letra_min (cad: cadena) retorna logico var ok: logico i: numerico inicio ok = FALSE desde i=1 hasta strlen(cad) { si ( ord(cad[i]) >= 97 and ord(cad[i]) <= 122 ) { ok = TRUE } } retorna ok fin subrutina tiene_numero (cad: cadena) retorna logico var ok: logico i: numerico inicio ok = FALSE desde i=1 hasta strlen(cad) { si ( ord(cad[i]) >= 48 and ord(cad[i]) <= 57 ) { ok = TRUE } } retorna ok fin subrutina tiene_car_especial (cad: cadena) retorna logico var ok: logico i: numerico inicio ok = FALSE desde i=1 hasta strlen(cad) { si ( ord(cad[i]) >= 40 and ord(cad[i]) <= 47 ) { ok = TRUE } } retorna ok fin subrutina obt_clave_num_interna(cad: cadena) retorna cadena var num_int: cadena i: numerico inicio num_int = "" desde i=1 hasta strlen(cad) { si (i % 2 <> 0) { num_int = num_int + str(ord(cad[i]), 0, 0) } } retorna num_int fin

You might also like