ejercicios_de_clase.pdf
-
Upload
milofertasdigitales -
Category
Documents
-
view
213 -
download
0
Transcript of ejercicios_de_clase.pdf
-
Instituto de Computacin Facultad de Ingeniera UdelaR Curso Programacin 1 2013
Ejercicio para resolver en clase
Se desea modelar una realidad consistente en el prstamo de libros de una biblioteca a socios. Una biblioteca posee un conjunto de libros. Cada libro tiene un nmero nico que lo identifica llamado ISBN y su estado puede ser prestado o disponible. Cuando el libro est prestado, se registra el nmero del socio que lo tiene y si este est atrasado o no. Si el libro est disponible, se almacena la cantidad mxima de das que es posible prestar dicho libro.
Se cuenta con las siguientes definiciones:
CONST MAX_LIBROS = ...;
TYPE
EstadoLibro = (prestado, disponible);
Libro = RECORD ISBN : Integer; CASE estado : EstadoLibro of prestado : ( nroSocio : Integer; atrasado : Boolean; ); disponible : ( maximoDias : Integer; ) END;
Biblioteca = RECORD libros : ARRAY[1..MAX_LIBROS] OF Libro; tope : 0..MAX_LIBROS; END;
a) Escriba una funcin que dados el ISBN de un libro y una biblioteca devuelva TRUE si el libro existe en la biblioteca y est disponible para prstamo. En cualquier otro caso debe devolver FALSE. Recuerde que no hay dos libros con el mismo ISBN.
FUNCTION estaDisponibleLibro (ISBN : Integer; bib : Biblioteca) : Boolean;
b) Escriba un procedimiento que dados un nmero de socio nroSocio y una biblioteca devuelva en las variables cantPrestados y cantAtrasados la cantidad de libros prestados al socio nroSocio y cuntos de esos libros estn atrasados.
PROCEDURE librosPrestadosSocio (nroSocio : Integer; bib : Biblioteca; VAR cantPrestados, cantAtrasados : Integer);
Considere la siguiente estructura que representa a los socios de una biblioteca.
ListaSocio = ^Socio; Socio = RECORD
nroSocio : Integer; sig : ListaSocio;
END;
1
-
Instituto de Computacin Facultad de Ingeniera UdelaR Curso Programacin 1 2013
c) Escriba una funcin que dada una lista de socios devuelve dicha lista invertida. La lista resultado no debe compartir memoria con la lista pasada por parmetro.
FUNCTION invertirListaSocios ( lis : ListaSocio ) : ListaSocio;
d) Escriba un procedimiento que, dados un nmero de socio y una lista, borre de dicha lista al socio. Si el socio no est en la lista, el procedimiento deja la lista inalterada.
PROCEDURE borrarSocio ( nroSocio : Integer; VAR lis : listaSocio);
2