Professional Documents
Culture Documents
Facultad Politécnica
Carrera: Licenciatura en Ciencias Informáticas - Plan 2009
2º Nivel – Turno Mañana – Sección “J”
Prof. Ricardo Barboza Lezcano
ALGORÍTMICA II
procesar_registro()
leer(...)
}
corte_nivel_1()
...
fin
donde…
1
Universidad Nacional de Asunción Jueves, 14 de octubre de 2010
Facultad Politécnica
Carrera: Licenciatura en Ciencias Informáticas - Plan 2009
2º Nivel – Turno Mañana – Sección “J”
Prof. Ricardo Barboza Lezcano
ALGORÍTMICA II
EJERCICIO #42
Una compañía dedicada a la venta de artículos varios tiene almacenados sus datos relativos a un determinado
mes en un archivo que posee la siguiente estructura:
EJERCICIO #43
Una empresa tiene datos acerca de las ventas realizadas durante un año. El resumen contiene los sgtes datos:
Codigo de zona, dia, mes, importe.
Se desea saber
a) A cuánto ascienden las ventas por mes en cada zona. Imprimir el nro. de mes aunque no haya existido
venta.
b) Cuál es el total de ventas por mes de la empresa
Observación
Los datos están ordenados por código de zona.
2
Universidad Nacional de Asunción Jueves, 14 de octubre de 2010
Facultad Politécnica
Carrera: Licenciatura en Ciencias Informáticas - Plan 2009
2º Nivel – Turno Mañana – Sección “J”
Prof. Ricardo Barboza Lezcano
ALGORÍTMICA II
EJERCICIO #44
Se tiene un archivo con los datos de los resultados de los exámenes de alumnos de una (solo una)
determinada carrera del año 2003. Cada registro tiene el siguiente formato:
Cedula (cadena), fecha_examen(AAAAMMDD), cod_curso, cod_asig, nota (1-5, -1=ausente)
Se desea imprimir, por cada alumno, cuántas veces estuvo ausente, cuántas se aplazó, cuántas veces obtuvo
2, etc. y al final el promedio de las notas que obtuvo.
Imprimir al final del listado los 25 mejores promedios en orden descendente de promedio. Si existen dos o más
iguales tener en cuenta el último en el archivo.
Se debe producir el siguiente listado
Frecuencia de notas
Cédula (A) (1) (2) (3) (4) (5) PROM
1383778 3 3 6 10 4 2 2.84
1782933 1 0 1 2 8 10 4.29
2673092 0 7 9 1 3 1 2.14
Mejores promedios
Cedula Promedio
1782933 4,29
1383778 2.84
---
Observaciones
Para calcular el promedio tome únicamente las notas distintas a ausente.
El archivo está ordenado por el campo cédula.
EJERCICIO #45
En un año determinado se realizó un control sobre los vehículos que han pasado por un puesto de peaje.
Todos los datos obtenidos se han grabado en un archivo con el siguiente formato:
Mes, dia, codigo de vehiculo, peso
El costo de peaje por vehículo asciende a:
Código Tipo Monto
COC Coche 6.000
CTA Camioneta 8.000
MIN Minibus 12.000
OMN Omnibus 20.000
CMN Camión 15.000
CMA Camión con acoplado 18.000
A cada camión con o sin acoplado se les pesó y se les cobró un recargo de 1200 G. por cada 50 Kilos o
fracción. Ej: 1201 => 1250; 1249 => 1250
Se desea obtener:
Por mes:
Cuantos vehículos de cada tipo pasaron y que monto se recaudó por cada tipo.
Monto total del peaje cobrado.
Por Año:
Promedio de recaudación mensual.
Promedio de recaudación por tipo de vehículos.
Total de vehículos que pasaron por el lugar por tipo de vehículo.
Observación:
El archivo está ordenado por Mes, día y código de vehículo.
3
Universidad Nacional de Asunción Jueves, 14 de octubre de 2010
Facultad Politécnica
Carrera: Licenciatura en Ciencias Informáticas - Plan 2009
2º Nivel – Turno Mañana – Sección “J”
Prof. Ricardo Barboza Lezcano
ALGORÍTMICA II
EJERCICIO #46
La universidad tiene registrado por cada alumno un archivo con el siguiente formato:
facultad(cadena), carrera(cadena), curso(numerico), cedula(cadena), nombre(cadena)
Se desea saber:
por cada curso, la lista de los alumnos que asisten y el total de alumnos del curso.
por cada carrera, el promedio de alumnos que asisten por curso.
por cada facultad, el total de alumnos.
Ejemplo de la salida:
Facultad: xxxxxxx
Carrera: xxxxxxxxxxxx
Curso: xxxxxxxxxxxx
Cedula Nombre
xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Total de alumnos: nn
Curso: xxxxxxxxxxxx
Cedula Nombre
xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Total de alumnos: nn
Observaciones:
El último registro no procesable tiene 0 en la variable facultad.
El archivo está ordenado por facultad, carrera y curso.
4
Universidad Nacional de Asunción Jueves, 14 de octubre de 2010
Facultad Politécnica
Carrera: Licenciatura en Ciencias Informáticas - Plan 2009
2º Nivel – Turno Mañana – Sección “J”
Prof. Ricardo Barboza Lezcano
ALGORÍTMICA II
corte_dia()
fin
/*
En la rutina de “primer_registro” guardamos el valor del campo de control e
inicializamos el total por dia
*/
sub primer_registro()
inicio
gdia = dia
tot_dia = 0
fin
sub procesar_registro()
inicio
tot_dia = tot_dia + punit * cnt
fin
/*
Por cada grupo imprimimos el dia y
el total de ventas realizadas por ese dia
*/
sub corte_dia()
inicio
imprimir("\n", gdia, "\t", tot_dia)
tot_mes = tot_mes + tot_dia
cnt_dia = cnt_dia + 1
primer_registro()
fin
5
Universidad Nacional de Asunción Jueves, 14 de octubre de 2010
Facultad Politécnica
Carrera: Licenciatura en Ciencias Informáticas - Plan 2009
2º Nivel – Turno Mañana – Sección “J”
Prof. Ricardo Barboza Lezcano
ALGORÍTMICA II
MAX_PROM = 0
primer_registro()
/*
Procesar el primer registro
Inicializar la variable que guarda el campo de control del anterior registro leido
Inicializar el vector de conteo de notas
*/
sub primer_registro()
inicio
gCedula = cedula
v_notas = {0,0,...}
fin
/*
Procesar el registro leido
Simplemente se cuenta la nota en la posicion correcta del vector
En la posicion 6 se colocan la cantidad de ausentes (nota == -1 )
*/
sub procesar_registro()
inicio
si (nota <> -1 ) {
inc ( v_notas[nota])
sino
inc ( v_notas[6])
}
fin
6
Universidad Nacional de Asunción Jueves, 14 de octubre de 2010
Facultad Politécnica
Carrera: Licenciatura en Ciencias Informáticas - Plan 2009
2º Nivel – Turno Mañana – Sección “J”
Prof. Ricardo Barboza Lezcano
ALGORÍTMICA II
/*
Por cada alumno debemos imprimir la cantidad de cada tipo de nota.
Ademas se imprime el promedio.
Luego se averigua (ver_mayor_prom) si el alumno leido formará parte de los 25 mejores promedio
Se vuelve a llamar a primer_registro() que inicializa gCedula y el vector contador de notas
*/
sub corte_Alumno ()
var
prom : numerico
c,s : numerico
k : numerico
inicio
imprimir("\n", gCedula, "\t\t") // Fíjese que se usa gCedula y NO cedula!!!
imprimir(v_notas[6]) //cantidad de ausentes
prom = s/c
imprimir("\t", prom)
ver_mayor_prom(prom)
primer_registro()
fin
/*
Averiguar si el alumno analizado forma parte de los 25 mejores promedios.
Se mantiene un vector de registros ordenados por promedio en forma descendente.
*/
sub ver_mayor_prom(p : numerico)
var
aux : TPromedio
k,j : numerico
inicio
aux.cedula = gCedula
aux.prom = p
si ( MAX_PROM < 25 ) {
inc(MAX_PROM)
v_Mejores_Prom[MAX_PROM] = aux
}
fin
/*
Imprimir el resumen de los 25 mejores promedios (como máximo )
*/
sub imprimir_mejores_prom()
var
k : numerico
inicio
imprimir("\n\nMejores promedios\n\tCedula\t\tPromedio")
imprimir("\n\t-------\t\t--------")
7
Universidad Nacional de Asunción Jueves, 14 de octubre de 2010
Facultad Politécnica
Carrera: Licenciatura en Ciencias Informáticas - Plan 2009
2º Nivel – Turno Mañana – Sección “J”
Prof. Ricardo Barboza Lezcano
ALGORÍTMICA II
// Imprimir cabecera
imp_cab_facultad()
sub primer_registro()
inicio
gfacultad = facultad
gcarrera = carrera
gcurso = curso
tot_curso = 0
tot_carrera = 0
tot_facultad = 0
cnt_curso = 0
fin
sub procesar_registro()
inicio
imprimir("\n\t\t\t",cedula, "\t", nombre)
inc(tot_curso)
fin
sub corte_curso()
inicio
imprimir("\n\t\tTotal de alumnos:", tot_curso)
inc(tot_carrera, tot_curso)
inc(cnt_curso)
tot_curso = 0
gcurso = curso
fin
sub corte_carrera()
inicio
corte_curso()
imprimir("\n\tPromedio de alumnos en la carrera:", tot_carrera/cnt_curso)
inc(tot_facultad, tot_carrera)
tot_carrera = 0
cnt_curso = 0
gcarrera = carrera
fin
8
Universidad Nacional de Asunción Jueves, 14 de octubre de 2010
Facultad Politécnica
Carrera: Licenciatura en Ciencias Informáticas - Plan 2009
2º Nivel – Turno Mañana – Sección “J”
Prof. Ricardo Barboza Lezcano
ALGORÍTMICA II
sub corte_facultad ()
inicio
corte_carrera()
imprimir("\nTotal de alumnos en la facultad : ", tot_facultad)
tot_facultad = 0
gfacultad = facultad
fin
sub imp_cab_facultad()
inicio
imprimir("\n\n\nFacultad:", facultad)
imp_cab_carrera()
fin
sub imp_cab_carrera()
inicio
imprimir("\n\n\tCarrera:", carrera)
imp_cab_curso()
fin
sub imp_cab_curso()
inicio
imprimir("\n\t\tCurso:", curso)
imprimir("\n\t\t\tCedula\tNombre");
fin