You are on page 1of 3

Algoritmos y Estructura de Datos II Ejercicios propuestos

Tema Subrutinas

1) Para almacenar una serie de nmeros se utiliza un arreglo de unidimensional, de N filas. El arreglo guarda una serie
ordenada de nmeros.
Cada fila est compuesta de la siguiente manera: el primer campo contiene un valor de la serie; y el segundo, el nmero
de fila en la cual se encuentra el siguiente valor de la serie, en orden ascendente.
La primera fila es especial, y contiene dos atributos indicadores que son:
1ra. Columna: La ltima fila utilizada para el almacenamiento de valores, y
2da. Columna: El nmero de fila en la cual se encuentra el menor nmero de la serie.
Haciendo uso de los valores incluidos en el segundo campo, escribir los mtodos para:
buscar (datos: matriz[*,*] numerico; valor: numerico) retorna numerico
Busca el valor dentro de la serie y devuelve el nmero de fila en el cual se encuentra, o cero en caso de que ese valor
no exista en la serie.
agregar (ref datos: matriz[*,*] numerico; valor:numerico) retorna logico
Agrega el valor a la serie, colocndolo en la primera fila libre al final de la serie, y modificando los valores de control
de la primera fila; adems de reajustar los ndices, de ser necesario. La funcin retorna un valor lgico FALSE en
caso de no haberse podido realizar la insercin.
eliminar (ref datos: matriz[*,*] numerico; valor:numerico)
Elimina el valor de la serie mediante la modificacin de los valores de control de la primera fila, adems de reajustar
los ndices, de ser necesario.
Ejemplos: Si el arreglo tiene el siguiente contenido :
1 6 4

2 9 5

3 6 2

4 2 6

5 16 0

6 4 3

7 0 0

8 0 0

Entonces : Buscar 2 dara por resultado 4; buscar 7 dara por resultado 0; agregar 8 producira el siguiente
efecto:
1 7 4 <=

2 9 5

3 6 7 <=

4 2 6

5 16 0

6 4 3

7 8 2 <=

8 0 0

y , eliminar 6 producira el siguiente efecto:


1 7 4

2 9 5

3 6 7

4 2 6

5 16 0

6 4 7 <=

7 8 2

8 0 0
Algoritmos y Estructura de Datos II Ejercicios propuestos
Tema Subrutinas

2) Para la realizacin de un examen se elabor un cuestionario compuesto por diez preguntas.


Para cada pregunta se presentan cuatro respuestas posibles numeradas de 1 a 4. Slo una de estas respuestas es la
correcta. Los 20 alumnos que participaron del examen fueron ubicados en cuatro filas identificadas como A, B, C, D y
cinco columnas numeradas de 1 a 5. La ubicacin del alumno consta en su hoja de examen (por ejemplo: B3 o D1).
Debido a que el orden de las cuatro respuestas de cada pregunta es distinto en cada examen, no existen dos exmenes
iguales.
Para comprobar la inexistencia de fraudes, se analizan los datos de un arreglo, el cual identifica los nombres de aquellos
alumnos que, encontrndose en posiciones contiguas, tienen ms de un 80% de coincidencia en sus respuestas.
Elaborar la funcin fraude, que devuelva una cadena conteniendo, entre comas, los cdigos de alumnos cuyos
exmenes presentaron coincidencias con los de otros compaeros, en el grado considerado como fraude.

Prototipo de la subrutina:
subrutina fraude (examen: arreglo [*] registro {nombre:cadena; ubicacion: cadena; respuestas: arreglo[10]numerico; }) retorna cadena;

3) En una clnica veterinaria se atiende a todo tipo de animales y la clnica paga el salario a los veterinarios por las horas
trabajadas de acuerdo al tipo de atencin brindada al paciente, a la edad y tipo del animal.
Los datos de las atenciones estn almacenados en el archivo atendidos.txt, con el siguiente formato:
fecha de atencin, cod. de veterinario, tipo de animal (1 al 5), tipo de trabajo (CO consultas, CI - ciruga), edad del animal, horas atendidas

El archivo est ordenado por fecha y por cdigo de veterinario


El archivo contiene registros de varios meses, pero todos corresponden al mismo ao.
Existen cinco tipos de animales
El precio por hora pagado a los veterinarios se establece en base al siguiente clculo por hora es:
((tipo de animal * edad )/ 4) * precio base de atencin establecido
Los tipos de animales se clasifican de acuerdo a la edad, de la siguiente manera :

Tipo de animal Edad Precio base de atencin establecido


Por Consultas Por Ciruga
1a5 0 a 3 aos 30.000 200.000
1a5 4 a 7 aos 22.000 400.000
1a5 8 y ms aos 35.000 800.000

Imprimir el sueldo mensual para cada veterinario; y los tres tipos de animales ms frecuentes, en orden creciente.
Subrutinas a ser desarrolladas, como parte del ejercicio:
precio_base (edad: numerico, tipo_trabajo: cadena) retorna numerico
// Rutina que devuelve el precio base del trabajo, de acuerdo a la edad del paciente.

honorario_hora (tipo_animal: numerico,edad: numerico, tipo_trabajo: cadena) retorna numerico


//Rutina que devuelve el monto de asignacin otorgado por al veterinario por hora de trabajo.

Cualquier otra rutina que considere til para la implementacin del algoritmo.
Algoritmos y Estructura de Datos II Ejercicios propuestos
Tema Subrutinas

Ejemplo tentativo de apertura de un archivo en SL


inicio subrutina abrir_archivo (archivo:cadena) retorna logico
si ( abrir_archivo(atendidos.txt) ) var
{ abierto : logico
procesar_datos() inicio
sino abierto = NO
imprimir (Error de lectura del archivo); abierto = set_stdin (archivo)
set_stdin ("") si ( not abierto )
} {
fin imprimir ("\nNo pudo abrirse archivo ", archivo)
abierto = NO
}
retorna ( abierto )
fin
Subrutinas predefinidas en SL, para el manejo de archivos
eof() : Retorna verdadero cuando ya no existen datos que puedan ser ledos desde un archivo.
Sintaxis
sub eof() retorna logico

set_ifs(): Establece el separador de valores (o campos) a ser utilizado en subsiguientes llamadas a leer()
Sintaxis
sub set_ifs (c : cadena)
Si c contiene ms de un carcter, solo se usa el primero de ellos.
set_ofs() : Configura qu carcter utilizar imprimir() para separar los valores de los datos compuestos, como los registros y arreglos.
Por defecto este carcter es una coma.
Sintaxis
sub set_ofs (c : cadena)

set_stdin() : Establece desde donde se obtendrn los datos cada vez que se llame a leer(). Por defecto, se lee del teclado.
Si a set_stdin() se pasa un nombre de archivo que no existe, o no se tiene permisos para leerlo, se devuelve el valor lgico FALSE.
Sintaxis
sub set_stdin (nombre_archivo : cadena) retorna logico

set_stdout() : Establece el destino de los datos que son generados a travs de imprimir(). Puede ser un archivo o la pantalla, siendo
este el destino por defecto.

Si a set_stdout() se pasa un nombre de archivo que no existe, ste es creado. Si el archivo ya existe, su contenido se pierde, a menos
que se utilice la segunda sintaxis (ver ms abajo) y se solicita que el contenido sea adicionado y no borrado.

Si el archivo no puede ser creado, porque no se tiene permisos por ejemplo, o porque ya est abierto, se retorna el valor lgico FALSE.
Puede usarse (cadena vaca) como nombre de archivo para hacer que subsiguientes llamadas a imprimir() enven los datos a la
pantalla, cerrando as cualquier archivo que se haya abierto previamente.

Sintaxis
Alternativa 1: El archivo se crea si no existe. Si ya existe, los datos previos se pierden.
sub set_stdout (nombre_archivo : cadena) retorna logico

Alternativa 2: Se especifica el modo en que se abrir el archivo.


sub set_stdout (nombre_archivo : cadena , modo_apertura : cadena) retorna logico

Los valores posibles del parmetro modo_apertura son:


wt : El contenido previo del archivo se pierde. Si el archivo no existe, se crea. Equivale a no pasar este segundo parmetro.

at : Todo lo que se imprima se agregar al archivo, conservando su contenido previo. Si el archivo no existe, se crea.

You might also like