Ingeniero Técnico en Informática de Sistemas


Programación: elementos


Elementos de Programación 7-9-01

Problema 1. Matrices más Dispersas (3 puntos)

Te han encargado la realización de un TAD para trabajar con matrices de nº reales. La matriz máxima posible tiene maxf filas y maxc columnas. En los problemas donde vas a usar este TAD, la mayoría de los valores son 0. Por tanto, si usamos un vector de dos dimensiones, estaremos desperdiciando mucha memoria.

Por este motivo, te han dicho que implementes la matriz como un vector de 1 a maxf filas, donde cada elemento del vector es una lista cuyos nodos tienen dos campos de información: la columna correspondiente, y el valor, siempre que no sea 0. Los valores que son 0 no aparecen representados explícitamente en la estructura de datos.

1 En este dibujo está representada

parcialmente, la estructura indicada (puede

2 faltar más información para completarla y

conseguir las complejidades indicadas)

3

4

.

. Esto sería una matriz en la que todos los

elementos son 0 excepto el (2,5), que vale

. 3.7, el (4,1) que vale 5.1, y el (4,8), que

maxf vale 2.2

TAD

Matriz es Crear, Filas, Columnas, PonerValor, ObtenerValor, Fila.

Operaciones

Crear (nf,nc: Entero) retorna Matriz

efecto Crea una matriz de nf filas por nc columnas con todos los valores

nulos.

Filas (M:Matriz) retorna Entero

efecto Devuelve el nº de filas que tiene la matriz M. Complejidad O(1).

Columnas (M:Matriz) retorna Entero

efecto Devuelve el nº de columnas que tiene la matriz M. Complejidad O(1).

PonerValor (M:Matriz; f,c:Entero; v:Real)

modifica Matriz

efecto Pone en la posición (f,c) de la matriz M el valor v. Si ya existiera un

valor en esa posición distinto de 0, se sustituye por el nuevo. (Podemos suponer que v nunca va a ser 0)

ObtenerValor (M:Matriz; f,c: Entero)

retorna Real

efecto Devuelve el valor real de la matriz M que ocupa la posición (f,c);

1. Definir el tipo Matriz

2. Implementa las operaciones del TAD.

3. Explica, sin implementar, cómo se modifiacaría la operación PonerValor si el parámetro v pudiera tener valor 0.

Problema 2. Urbanización (4 puntos)

Actualmente se está construyendo una nueva urbanización en una zona residencial de Cáceres, por lo que se ha decidido que la comunidad de vecinos de la urbanización mantenga información de los propietarios de las parcelas compradas, teniendo en cuenta que habrá un máximo de 125 parcelas en la urbanización.

Para manejar la información referente a una parcela (nombre del propietario, nº de habitaciones de la casa, si tiene o no piscina) se usará un objeto que tiene la siguiente descripción (que suponemos totalmente implementado):

Parcela= Object

Procedure Crear (prop:string; habit:byte; pisc:boolean);

Function Obtener_propietario:string;

Function Obtener_habitaciones: byte;

Function Obtener_si_piscina: boolean;

private

propietario: string;

n_habitaciones: integer;

piscina: boolean;

end;

Para llevar la gestión de la comunidad, crearemos un TAD que nos facilite esta tarea. Este TAD deberá implementarse como un nuevo OBJETO y utilizar el anterior objeto Parcela. La especificación del TAD es la siguiente:

TAD

Urbanización es Crear, Añadir, Total, Buscar, ConPiscina

Operaciones

Crear retorna Urbanización

efecto Inicializa la estructura.

Añadir (U:Urbanización; N:cadena; nhabit:entero; pisc:booleano)

modifica Urbanización

efecto Añade ordenadamente,según el nombre del propietario N,un nuevo

habitante a la urbanización, cuya casa tiene nhabit habitaciones y pisc indica di tiene o no piscina.

Total (U:Urbanización)

retorna Entero

efecto Devuelve el nº de parcelas ocupadas que hay en la urbanización

actualmente. La complejidad de esta operación debe ser constante.

Buscar (U:Urbanización; Hab: entero; pisc: boolean)

retorna Cadena

efecto Devuelve el nombre del primer propietario que encontremos que

posee una casa con las especificaciones de Hab habitaciones y con

o sin piscina según indique el parámetro pisc.

ConPiscina (U:Urbanización)

retorna Entero

efecto Devuelve el nº de casas que tienen piscina.

Nota: Para poder aprobar el exámen es necesario obtener una nota mayor o igual a 6 en el test y tener en cada ejercicio 4 puntos cómo mínimo (Cada ejercicio se puntúa sobre 10).

3.7

5

?

2.2

8

5.1

1




Descargar
Enviado por:Alberto García
Idioma: castellano
País: España

Te va a interesar