29/03/2008 - CiberEsquina - Universidad Nacional Abierta

Anuncio
M - 324
Versión 1
Primera Integral
Lapso 2008/1
1/5
UNIVERSIDAD NACIONAL ABIERTA
VICERRECTORADO ACADÉMICO
ÁREA INGENIERÍA
MODELO DE RESPUESTA
ASIGNATURA: Computación II
MOMENTO: Primera Integral
FECHA DE APLICACIÓN: 29/03/08;
CÓDIGO:
MOD. I, UND. 1, OBJ.1
324
VERSIÓN:1
CRITERIO DE DOMINIO 1/1
1- Tipo Abstracto de Datos. El siguiente es un modelo del TAD : a) Se propone
el uso de una estructura de vector unidimensional de registros (tipo record) y
operaciones de: Cálculo de distancia Manhattan entre un par de puntos,
distancia Euclídea, entre un par de puntos, Hallar la distancia Manhattan entre
un punto y los N -1 restantes, Hallar la distancia Euclídea entre un punto y los
N -1 restantes, Ordenar ascendentemente por distancia entre un punto y los N
-1 restantes, entre otras, como se muestran a continuación:
TAD VECTOR de
registros
1- Hallar
distancia
Manhattan
entre un par de
puntos
2- Hallar distancia
Euclídea entre un par
de puntos
6- Hallar la distancia
Euclídea mínima entre
un punto y los N-1
restantes
3- Hallar la
distancia Manhattan
entre un punto y los
N -1 restantes
4- Hallar la
distancia Euclídea
entre un punto y
los N -1 restantes
Figura 1
b) Tipo de Dato (PASCAL):
type
pares = record
x : real;
y : real
end; {pares}
conjunto = array[1..N] of pares;
Ingeniería de Sistemas
5- Hallar la distancia
Manhattan mínima
entre un punto y los
N-1 restantes
M - 324
Versión 1
Primera Integral
Lapso 2008/1
2/5
Gráfico de la estructura :
Posición:
x1
x2
y1
y2
(1)
(2)
…
xN-1
xN
yN-1
yM
(N-1)
(N)
La operación a implementar es CalcularDistanciasPares, la cual calcula la
distancia euclídea entre todos los pares de puntos.
procedure CalcularDistanciasPares(A: conjunto);
var
i, j
: integer;
d1
: real;
Calcula la distancia
begin
Euclídea entre cada
for i := 1 to N do
par de los N puntos
for j := i+1 to N do
begin
d1 := DistanciaEuclidea(A[i].x,A[i].y);
writeln(' par ', A[i].x,A[i].y);
writeln('Distancia Euclidea ', d1);
end;
end;
function DistanciaEuclidea (x,y: real): real;
begin
DistanciaEuclidea:= sqrt (x*x + y*y);
end;
Calcula la distancia
Euclídea entre un par
de puntos
Criterio de corrección: Se logra el objetivo si se realiza lo solicitado en las dos
secciones. Con respecto a la sección a) deberá describir el TAD apropiado,
contemplando al menos las operaciones mencionadas en la descripción de la
situación. Para cumplir con lo exigido en la sección b), debe implementarse una
operación en Pascal. En este modelo se presentó la operación Calcular Distancias
entre Pares de puntos.
Ingeniería de Sistemas
M - 324
Versión 1
Primera Integral
Lapso 2008/1
MOD. I, UND. 2, OBJ. 2
2- a- Estructura de datos:
3/5
CRITERIO DE DOMINIO 1/1
tipo lista
Algunas operaciones asociadas a este tipo de lista son: ListaVacia ( detecta si
la lista está vacía o no), Insertar( agrega nodos a la lista), Eliminar( elimina
nodos bajo cierto criterio). Recorrer( avanza el puntero en la lista), Buscar(
busca y localiza algún dato en la lista).
b) Type
tipo_numero_telefono = string[11];
apunt_nodo_lista = ^nodo_lista;
nodo_lista = record
numero
: tipo_numero_telefono;
prox_elemento : apunt_nodo_lista;
end;
tipo_cadena
= string[4];
Procedimiento de eliminación de números(nodos) dado un prefijo
procedure EliminarNumeros(var L : apunt_nodo_lista; pre : tipo_cadena );
var
aux, aux1, ant : apunt_nodo_lista;
begin
aux := L;
ant := L;
if ListaVacia(aux) then writeln(' Lista Vacia ')
else
A partir de la posición 1
while (aux <> nil) do
verifica si esta el prefijo:
begin
pre
if pos(pre, aux ^.numero) = 1 then
begin
ImprimirData(aux);
aux1 := aux ^.prox_elemento;
ant^.prox_elemento:= aux1;
If aux = L then {primer elemento}
begin
L := aux1;
ant := aux1;
end;
dispose(aux);
Ingeniería de Sistemas
M - 324
Versión 1
Primera Integral
Lapso 2008/1
4/5
aux := aux1
end
else
begin
ant := aux;
aux := aux ^.prox_elemento
end;
end;
end; {EliminarNumeros}
procedure ImprimirData(A: apunt_nodo_lista);
begin
write ('ELIMINADO DE LA LISTA ');
write (aux ^.numero,' ' );
writeln;
end;
Criterio de corrección: Se logra el objetivo si se realiza lo solicitado en las dos
secciones del planteamiento de la situación. Se debe emplear manejo dinámico de
la memoria. Es obligatorio presentar una descripción de la estructura de datos a
emplear en PASCAL, similar a la mostrada en este modelo. Se admite que se
haga referencia a funciones o procedimientos tales como ListaVacia , ImprimirData
u otro auxiliar que requiera la realización particular del estudiante. La función pos
es una función estándar del Lenguaje Pascal, en su lugar puede usarse una
función propia.
MOD. II, UND. 3, OBJ. 3
CRITERIO DE DOMINIO 1/1
3- Procedimiento
procedure HallarMenoryMayor(r: apunt_arbol);
var
aux
: apunt_arbol;
menor, mayor : integer;
begin
if ArbolVacio( r) then writeln(' Arbol Vacio ')
else
begin
aux := r;
menor := MAX;
mayor := MIN;
HallarMenor(r,menor);
HallarMayor(r,mayor);
Ingeniería de Sistemas
M - 324
Versión 1
Primera Integral
Lapso 2008/1
5/5
writeln(' el menor elemento es ', menor);
writeln(' el mayor elemento es ', mayor);
end;
end;
Los procedimientos recursivos HallarMenor y HallarMayor son similares, con la
diferencia de que el primero compara contra el menor y el segundo contra el
mayor. A continuación se presenta el procedimiento HallarMenor:
procedure HallarMenor( var AP: apunt_arbol; var m : integer);
var
aux : apunt_arbol;
begin
aux := AP;
if aux <> nil then
begin
if AP ^.elemento <= m then m:= AP ^.elemento;
HallarMenor(AP^.izq,m);
HallarMenor(AP^.der,m);
end;
end;
Criterio de corrección: Se logra el objetivo si se resuelve el problema planteado
empleando una estructura de árbol binario, con un procedimiento recursivo de
búsqueda y de determinación del mínimo y del máximo valor.
FIN DEL MODELO DE RESPUESTA
Ingeniería de Sistemas
Descargar