Subido por Giovanni Zarbo

Programateca

Anuncio
Diagrama de clases
1.- Diseñe las clases necesarias para modelar una Valida del 5 y 6, donde la
valida esta compuesta por cierto número de carreras y en cada carrera
participan 6 caballos. Deberá contemplar la creación de cada carrera con
sus correspondientes caballos, además de dar la salida de los caballos,
donde el caballo ganador se generara de forma aleatoria.
2.- Diseñe las clases necesarias para modelar una biblioteca, donde existan
libros de distintos tipos. Se podrá retirar un libro en calidad de préstamo,
comprar libros, incorporar nuevos libros y desincorporar libros de la
biblioteca.
3.- Diseñe las clases necesarias para modelar un estacionamiento de
vehículos, donde los vehículos pueden entrar y salir las 24 horas del día
durante todo el año. Asuma que el estacionamiento tiene un máximo de 50
puestos.
4.- Los procesadores contienen regiones especiales para el almacenamiento
denominadas registros. Existe un registro especial llamado el registro
apuntador en donde se almacenan direcciones de memoria.
Al momento de ejecutar un programa se cargan en memoria las
instrucciones de dicho programa y este registro se inicializa con la dirección
del espacio que ocupa la primera instrucción del programa en memoria.
Cada vez que se ejecuta una instrucción el procesador elimina esa dirección
del registro apuntador y agrega la siguiente dirección.
Cuando el procesador se consigue con una llamada a un método (la cual no
es mas que una orden de “saltar” a una dirección de memoria no contigua),
el procesador almacena la ultima dirección del apuntador en otro registro
especial denominado A5, para saber a que dirección de memoria regresar
cuando culmine la ejecución de las instrucciones del método y "salta" a la
dirección de memoria en donde se encuentran almacenadas las
instrucciones del método. Luego ejecuta cada una de las instrucciones y si
se encuentra una llamada a otro método, almacena la ultima dirección del
registro apuntador en el registro A5 y "salta" a donde se encuentran las
instrucciones de ese nuevo método y así sucesivamente. Cuando finaliza la
ejecución del método en el que se encuentra., el procesador remueve una
por una las direcciones que almacenó en el registro A5 regresando a la
localidad de memoria donde se encontraba el apuntador antes de ejecutar
la llamada a un método, para así poder continuar con el flujo de la
ejecución. Realizar el diagrama de clases con las relaciones necesarias para
poder crear dicha aplicación. Deberá especificar el tipo de relación entre las
clases.
5.- Responda las siguientes preguntas en forma escrita.
a.- Que es herencia?
b.- Explique cual es la razón por la cual los atributos de una
clase deben declararse private y los métodos public.
c.- Que diferencia hay entre atributos private y atributos
protected?
d.- Cual es la diferencia entre clase y objeto?
e.- Cual es la diferencia entre agregación y generalización
f.- Cuál es la utilidad de crear un método SET en una clase?
g.- Cuál es la utilidad de la sobrecarga de métodos? Escriba
un ejemplo.
h.- Que es agregación?
i.- Que es generalización?
6.- Se desea crear una aplicación para representar la fauna de un país. Se
representaran los mamíferos, peces y aves.
De los mamíferos se
consideraran si viven en el agua (acuáticos) o en la tierra (terrestres).
Además debe proveer la flexibilidad de poder expandir dicha lista de
animales para mejoras de la aplicación a futuro. Además el sistema deberá
guardar un historial de los primeros 100 animales clasificados. Realizar el
diagrama de clases con las relaciones necesarias para poder crear dicha
aplicación. Deberá especificar el tipo de relación entre las clases.
7.- Se desea crear una aplicación para representar el funcionamiento de
una Biblioteca. La biblioteca manejará libros, medios audiovisuales y
publicaciones periódicas. Entre los medios audiovisuales se tiene videos y
música. Además debe proveer la flexibilidad de poder expandir dicha lista
de elementos de la biblioteca para mejoras de la aplicación a futuro. Por
otro lado, el sistema deberá guardar un historial de los elementos
almacenados en la Biblioteca (asuma un máximo de 100). Realizar el
diagrama de clases con las relaciones necesarias para poder crear dicha
aplicación. Deberá especificar el tipo de relación entre las clases.
8.- Se desea crear una aplicación para dibujar figuras geométricas. Con la
aplicación se podrá dibujar: cuadriláteros, círculos y triángulos. Entre los
cuadriláteros deberá representar cuadrados y rectángulos. Además debe
proveer la flexibilidad de poder expandir dicha lista de figuras geométricas
para mejoras de la aplicación a futuro. El sistema deberá guardar un
historial de las primeras 50 figuras creadas. Realizar el diagrama de clases
con las relaciones necesarias para poder crear dicha aplicación. Deberá
especificar el tipo de relación entre las clases.
9.- Diseñe un diagrama de clases para llevar control de las solicitudes de
las canciones de su preferencia, hechas por los oyentes a las estaciones de
radio. Se debe contemplar en el diseño, un registro de los usuarios de la
estación de radio, histórico de solicitudes hechas por ellos, registro de
canciones de la estación, locutores de la estación y programación de la
misma.
10.- La Universidad Metropolitana desea elaborar un sistema de
reservaciones de espacio físico. La universidad esta formada por Aulas,
Laboratorios, y Auditorios. Por otra parte las Aulas pueden ser Aulas
Sencillas o Aulas Multimedia. El sistema debe contener información sobre:
identificación, capacidad y ubicación de cada espacio físico. Igualmente se
deberá tener información acerca de las reservaciones de las cuales se
conocerá: fecha y hora de reservación, identificación del espacio reservado
y nombre de la persona que reserva. Se quiere además mantener un
registro con cada una de las reservaciones realizadas. Elabore el diagrama
de clases para representar el nuevo sistema.
11.- La compañía Simco ha diseñado un nuevo disco duro con capacidad
superior a los vistos hasta ahora. La programación para manipular el disco
duro, ha sido diseñada en forma orientada a objetos, es decir, visualizando
el disco duro como un objeto. El disco estará constituido por directorios,
donde cada directorio contiene una serie de objetos archivos.
Adicionalmente se está diseñando el sistema operativo que manejará el
disco, la permisología del disco, se controla por usuario, los cuales se
definen por grupos donde cada grupo tiene accesos a diferentes directorios.
Como parte del sistema operativo, se desea mantener una historia (log) de
todos los accesos realizados al disco, los directorios y los archivos. Elabore
el diagrama de clase que permita representar el nuevo disco, junto con el
sistema operativo que la compañía Simco desea implementar.
Vectores y Matrices
1.- Elabore un programa que construya un vector de N-casillas de
números enteros y busque el mayor de los números contenidos en el
vector.
2.- Elabore un programa, que reciba dos objetos matriz A y B, ambas
cuadradas de dimensión 4 y calcule:
a.- La suma de ambas matrices.
b.- La multiplicación de ambas matrices.
3.- Elabore un programa, que construya un objeto polinomio. De tal
manera que al dar los valores para evaluarlo, el programa permita:
Evaluar el polinomio dado un valor de X.
Imprimir el polinomio de la siguiente forma: p(x)= 3X4+4X2+6X8+9
4.- Hacer programa que trabaje con una matriz MAT de números float
y devuelva un vector, en el cual se almacenen las sumas de cada
diagonal de la matriz. Solamente se almacenarán la diagonal principal
y las que se encuentran por encima de ella.
5.- Dada dos matrices A y B cuadradas, elabore los métodos que
permitan multiplicar, sumar y restar matrices, y calcular matriz
transpuesta.
6.- El máximo de un arreglo de una dimensión se calcula con dos
reglas:
Si el arreglo tiene un sólo elemento, entonces devuelve ese
elemento.
b) Sino, parte el arreglo por la mitad, y devuelve el máximo de las
dos mitades.
Elabore un metodo que dado un arreglo de una dimensión, devuelva
la posición del máximo elemento según las reglas anteriores.
7.- Una matriz persimétrica es una matriz (nxn) que es simétrica
alrededor de ambas diagonales. Por ejemplo:
1
4
2
6
2
0
1
5
2
0
7
9
12
9
7
8
2
5
1
8
2
4
2
6
1
Escriba método booleano que indique si una matriz es persimétrica.
8.- Una matriz esparcida es una matriz en la cual la mayoría de los
elementos son 0. Es un desperdicio almacenar estas matrices
completas puesto que muy pocos elementos contienen información
significativa.
Una forma eficiente de representar una matriz esparcida m x n es un
arreglo k x 3, donde K es el número de elementos significativos
(distintos de 0). En ese arreglo se almacena el índice de la fila, el
índice de la columna y el valor de los elementos distintos a cero de la
matriz original. Esto se denomina una representación reducida.
Escriba un método que dada una matriz esparcida de dimensión m x
n, genere la representación reducida de dicha matriz.
9.- Elabore un método que dado un objeto matriz de números
enteros y un valor N recibidos como parámetros, genere un objeto
vector que contenga aquellos números de la matriz múltiplos de N. El
vector deberá contener los números de la matriz y las posiciones (I,J)
donde se encuentran.
Matriz
Vector
3 4 6 7
14 12 9 8
15 17 23 43
18 34 51 67
Valor de N= 2

Valor 4
Pos I 0
Pos J 1
6
0
2
14 12
1
1
0
1
8
1
3
18 34
3
3
0
1
10.- Se tiene un objeto vector, donde se encuentran almacenadas
letras del alfabeto con su correspondiente valor numérico. Elabore
un método que reciba una cadena de caracteres y genere la suma, de
los valores numéricos de cada letra dentro de la cadena.
Vector
‘A’ ‘B’ ‘C’ .... ‘Z’ ‘a’ ‘b’ ‘c’ ... ‘z’
52 45 22 ... 36 12 28 96 ... 74
Cadena= “Casa”  Suma de valores numéricos =
63
11.- Dado un objeto
vector, recibido como parámetro, el cuál
contiene números enteros y posiciones (I , J) de una matriz. Genere
el objeto matriz correspondiente, a partir de los datos del vector.
Vector
Valor 4 6 15 18 7
Pos I 0 0 1 1 1
Pos J 1 2 0 1 3
1 33
3 3
0 1
La matriz
resultante es
0 4 6
15 18 7
0 0 0
1 33 0
0
0
0
0
12.- Dada una matriz nxn que contenga las distancias entre n
ciudades, construya un método en Java que obtenga la distancia total
de un recorrido, el cual es expresado por medio de una lista Simple
de ciudades a recorrer.
Distancias
Caracas
Maracay
Valencia
Carac
as
0
120
200
Maracay
Valencia
120
0
80
200
80
0
Si su método se denomina distancia, su comportamiento sería el
siguiente: (distancia lista)
donde lista es una referencia a la
siguiente lista: caracas valencia maracay valencia caracas
debe devolver como resultado de 560
Listas
1.- Dada una lista simple, se desea crear una nueva lista con los elementos
en orden inverso. Utilice los metodos vistos en clase. (InsertarPrimero,
InsertarFinal)
2.- Modifique la pregunta anterior para que a medida que va creando la lista
nueva vaya destruyendo la lista original.
3.- Dadas dos listas simples cuyos elementos están ordenados
ascendentemente, se desea crear una nueva lista con los elementos de
estas dos, tambien ordenada ascendentemente.
4.-Dadas tres listas simples, crear una nueva lista que contenga la suma de
los elementos de las tres listas uno a uno, es decir los tres primeros, los
tres segundos y asi sucesivamente. Las listas no necesariamente son de la
misma longitud.
5.- Dada una lista simple y un numero entero, se desea crear una nueva
lista solo con aquellos elementos que son multiplos de ese numero dado.
6.- Dada una lista, y un numero entero, cambiar todas las ocurrencias de
ese numero por el valor -999.
7.- Dada una lista, un valor entero N y una valor entero V. Cambiar todas
las ocurrencias del valor V en la lista por el valor N. No debe crear una
nueva lista solo trabajar sobre la misma lista original
8.- Dado el código de lista simple visto en clase. Escriba un método que
permita Insertar un nuevo nodo dos posiciones después de una posición
dada.
9.- Dada una lista doble ordenada ascendentemente, escriba un método
que permita insertar un nuevo nodo manteniendo el orden.
10.- El servicio de reparación de aire acondicionado Acme, tiene una lista
circular doble enlace, de los técnicos que reparan los equipos en las
oficinas, cada técnico puede tener hasta un máximo de ocho servicios al
día. Adicionalmente, se tiene una lista de las llamadas que han realizado
las compañías durante el día, solicitando la reparación de equipos. De los
datos de la reparación, se conoce, el nombre de la compañía, tipo de equipo
y dirección. Se desea asignar a cada técnico las visitas que deberá realizar
en un día, si un técnico llega a su máximo de visitas, se deberá pasar al
siguiente técnico a asignarle visitas. Se desea implementar un programa en
Java, que dada las dos listas, asigne a cada reparación un técnico.
Implemente los métodos adicionales que usted considere necesarios en las
estructuras de datos, así como el programa principal en Java.
11.- Responda las siguientes preguntas:
a. ¿Cuáles operaciones de una lista enlazada están negadas en
una pila y por qué?
b. Cuales son las operaciones básicas de una cola. Explíquelas.
Explique en forma grafica la operación de eliminar un nodo de una posición
X en una lista doble.
12.- En el Teatro Nacional nos piden un sistema que permita llevar el
control para la venta de entradas de las diferentes funciones de un
espectáculo determinado. Las funciones se diferencian por la fecha (solo
hay una función diaria). Para cada función se debe llevar el control de los
asientos comprados. Se debe poder listar en cualquier momento los
nombres de las personas que han comprado entrada para una función
determinada. Igualmente se debe poder calcular el numero de asientos
disponibles en cada función. Usted deberá diseñar las Estructuras de Datos
necesarias para resolver este problema. Deberá expresar su solución en
forma grafica. Así mismo deberá explicar la estructura de los diferentes
nodos que formen las estructuras a utilizar.
13.- El departamento de atención al cliente de la compañía de
software MICROEVILSOFT posee una lista circular doblemente
enlazada con todos los técnicos que trabajan en atención al cliente. El
departamento de atención al cliente está dividido en grupos según los
diferentes programas a los cuales se le presta soporte técnico, estos
grupos son: Procesador de Palabras, Hoja de Calculo, Presentación,
Base de Datos, Sistema Operativo y Juegos. Cada grupo posee un
mínimo de dos empleados. Cada soporte técnico de MICROEVILSOFT
está obligado a atender un máximo de 8 clientes diarios. Si un técnico
no está disponible al momento, este está en la obligación de devolver
la llamada al cliente para prestarle sus servicios.
La compañía
posee una lista ordenada por hora de todas las llamadas que se han
hecho al departamento de atención al cliente durante el día. De estas
llamadas, se conocen los siguientes datos: el nombre de la persona, el
número de teléfono donde encontrarlo, el programa de software con
problemas y el problema que tiene con dicho software.
Se desea
implementar un programa en Java el cual dada las dos listas, le asigne
llamadas a los técnicos correspondientes, tomando en cuenta la
cantidad de clientes diarios que puede atender cada técnico.
14.- La compañía 3COM, que produce dispositivos y accesorios para
computadoras, ha diseñado un nuevo disco duro con capacidad
superior a los vistos hasta ahora. La programación para manipular el
disco duro, ha sido diseñada en forma orientada a objetos, es decir,
visualizando el disco duro como un objeto con su capacidad total y
directorios que lo componen. Además, dicho disco duro esta
constituido por objetos directorios los cuales a su vez contienen un
registro de los archivos y directorios que los componen, cada uno con
su capacidad donde cada directorio contendrá una serie de objetos
archivos. Diseñe y dibuje en forma gráfica la estructura de datos
necesaria para resolver el problema en forma eficiente,
justifique su respuesta.
15.- El Museo López y Toro, permite una visita diaria hasta un máximo de 8
personas. Diariamente se hacen reservaciones para la visita al museo. Los
días de visita del museo, se encuentran en una lista circular de días y las
personas que solicitan visitar al museo, se encuentran en otra lista de
solicitud con los datos nombre, cedula y teléfono. Se desea implementar un
programa en Java, que dada las dos listas, asigne a cada día, las personas
que podrán visitar el museo. Implemente los métodos adicionales que usted
considere necesarios en las estructuras de datos vistas, así como el
programa principal en Java.
16.- La siguiente estructura es una forma de representar matrices NxM
Se desea que usted:
a.- Escriba la clase CNodo para este tipo de estructura (3 puntos).
b.- Escriba la definición de la nueva clase Cmatriz y programe únicamente
el método matrizView.
17.- El profesor de estructura de datos desea elaborar un quiz, donde cada
estudiante tenga una pregunta diferente, para ello a creado una lista con la
información de los estudiantes y una pila de preguntas a realizar, las cuales
pueden estar repetidas. Se desea formar una estructura nueva donde
aparezcan los estudiantes con una pregunta asignada, cada estudiante
deberá tener una pregunta diferente.
Pilas y Colas
1.- Se tienen dos pilas (stacks) que contienen números enteros; la
primera ordenada ascendentemente desde el tope hacia el fondo, y la
segunda ordenada descendentemente desde el tope hacia el fondo. Si
se cuenta con la clase CPila que contiene las operaciones básicas
definidas para pilas, elabore un programa que fusione ambas pilas en
una tercera ordenada descendentemente desde el tope hacia el
fondo. NOTA: no debe utilizar pilas auxiliares.
2.- Decimos que una pila P es un sombrero de otra pila Q, si todos los
elementos de P están en Q, en el mismo orden, y en las posiciones
más próximas a la cima. La pila nula se considera un sombrero de
cualquier pila. Por ejemplo, en la siguiente figura, la pila A es un
sombrero de la pila B, pero no de la pila C.
Escribir una función recursiva que dado dos pilas de números enteros,
verifique si la primera es sombrero de la segunda.
3.- Simular una pila utilizando dos colas.
4.- Simular una cola usando dos pilas.
5.- Simule dos pilas usando un arreglo. La primera pila se llena de la
posición 0 hacia tamanoMax y la segunda pila se llena de la posición
tamanoMax hacia 0. Donde tamanoMax es el numero de elementos
que puede contener el arreglo. Usted debe controlar que el arreglo no
se llene es decir que no haya ?overflow?.
6.- Crear el codigo necesario para trabajar las estructuras de dato
Pila y Cola como extensión de un vector en lugar de una lista simple
7.- Se tiene una lista con los datos de los clientes de una compañía de
telefonía celular, los cuales pueden aparecer repetidos en la lista, si
tienen registrado más de un número telefónico. La compañía para su
próximo aniversario desea enviar un regalo a sus clientes, sin repetir
regalos a un mismo cliente. Los regalos se encuentran almacenados
en una pila de regalos. Se desea elaborar un programa en Java que
permita generar una nueva estructura donde los clientes aparezcan
sólo una vez con sus regalos asignados.
8.- Hacer un método que reciba una lista y una pila, el método
deberá modificar la lista original, eliminando las posiciones indicadas
por cada nodo de la pila.
9.- Una matriz de M-columnas puede ser vista como M-pilas
consecutivas, donde la operación push de colocar un elemento en la
pila, debería recibir el elemento a colocar y la identificación de la pila
j donde se desea introducir el elemento. Elabore la clase Pila en java
que permita implementar la operación push de una sucesión de Mpilas en un objeto matriz NxM.
10.- Responda las siguientes preguntas:
¿Cuáles operaciones de una lista enlazada están negadas
en una pila y por qué?
b. Cuales son las operaciones básicas de una cola.
Explíquelas.
a.
11.- Escribir un programa que invierta el contenido de una cola.
Usted puede utilizar estructuras de datos auxiliares para hacerlo.
12.- Se tiene una almacén donde se encuentran las neveras
fabricadas por una planta, las primeras neveras que fueron fabricadas
están de últimas, dentro del almacén y las últimas neveras
fabricadas, aparecen de primeras dentro del almacén. Los datos de
cada nevera son código y descripción. El almacén dispone de una sola
puerta, por donde entran las neveras a ser almacenadas y salen las
neveras que se van a distribuir a las tiendas. Adicionalmente, se tiene
una cola de solicitudes de neveras realizadas por las tiendas, donde
aparece el nombre de la tienda y la cantidad solicitada de neveras,
elabore un método que permita asignar a cada tienda las neveras,
generando una nueva estructura que contenga la tienda y el código
de las neveras asignadas.
13.- Responda las siguientes preguntas
brevemente su respuesta en cada caso:
y
justifique
a.
De las siguientes estructuras cuál es mas
eficiente para almacenar la información del
último censo de cada estado de Venezuela.
i. Una pila
ii. Una cola
iii. Una lista simple
iv. Un vector
b.
¿En que casos utilizaría la estructura de tipo
cola, de un ejemplo?
14.- Una matriz de N-filas puede ser vista como N-colas
consecutivas, donde la operación encolar de introducir un elemento
en la cola, debería recibir el elemento a introducir y el identificador
de la cola i de donde se desea meter el elemento. Elabore un método
que permita implementar la operación encolar de una sucesión de Ncolas en un objeto matriz NxM.
15. Implementar un método que simule la calculadora HP para las
operaciones matemáticas. Utilizando una pila (stack)
16. Implemente el objeto Cola en Java de manera que reciba los
datos de personas en una cola de un banco, esto es, nombre y
conjunto de transacciones a realizar. Se requiere conocer el tiempo
estimado de permanencia de cualquier persona el la cola, si se
conocen los tiempos estimados para cada tipo de transacción:
Retiro
4 min
Depósito
2 min
Consulta
3.5 min
Actualización
5 min
Pagos
2 min
17. Hacer un método que reciba una lista y una pila, el método
deberá modificar la lista original, eliminando las posiciones
indicadas por cada nodo de la pila.
Lista -> 2 ->4 ->6 ->8 ->9 ->3
Pila -> 2 6
Lista nueva-> 2 ->6 ->8 ->9
18. Dada una PILA y una COLA que contienen Letras almacenadas,
las cuales se pueden repetir, elabore un método en Java, que genere
una lista con la información de ambas, pero sin repetir las letras.
19. Elabore un método en Java que verifique si una pila A está
contenida en una pila B. Una pila A está contenida en una pila B, si
todos los elementos de la pila A están en la pila B.
20. Los compiladores generalmente usan pilas para facilitar el
proceso de evaluar expresiones y generar código en lenguaje de
maquina. Las expresiones aritméticas generalmente se escriben en
notación infija, es decir operando operador operando Por ejemplo: 2
+ 7 ; 16 / 4 ; 2 * 3 etc. Los computadores prefieren la notación
postfija, es decir operando operando… operador Ejemplo: 2 7 + ;
16 4 / ; 2 3 * etc. Para evaluar una expresión aritmética el
computador deberá primero convertir la expresión de infija a postfija
y luego proceder a evaluar la expresión. En ambos procesos utilizara
una pila para hacerlo. Escriba un programa en Java que reciba una
expresión como un String, y luego utilizando la estructura de datos
Pila, primero convierta la expresión a postfija y la muestre por
pantalla, y luego proceda a evaluar la expresión mostrando el
resultado final.
Nota: para hacer mas fácil la evaluación, considere solo los cuatro
operadores básicos (+,-,*,/) y solo operandos de un solo digito. La
separación entre ellos será de un solo espacio en blanco.
Conjuntos (se pueden realizar con cualquier otra estructura
dinámica)
1.- Se desea simular el juego del amigo secreto, se conocen los
nombres de las personas que desean jugar . Se deberá colocar los
nombres de las personas, en una bolsa, de la cuál se irán sacando
uno a uno. Explique la estructura de datos que utilizaría para
implementa el juego. Usted deberá leer los datos necesarios desde el
teclado. Implemente el juego en un programa, donde, usted deberá
crear la bolsa de las personas que participarán en el juego y asignar a
cada persona un papelito, por supuesto, que deberá controlar que no
le salga a una persona su nombre. Al final tendrá almacenada los
nombres de cada persona y su amigo en una Estructura adecuada.
Escriba el programa en Java para implementar esta asignación.
Asuma la implementación de las estructuras vistas en las clases.
2.- Los profesores del departamento, han considerado crear una
nueva forma de asignar las preguntas para el examen. Las preguntas
del examen a realizar se encuentran en un conjunto donde aparece la
descripción de la pregunta y la cantidad de estudiantes que la
deberán contestar. Adicionalmente, antes de entrar al salón de
clases, colocan a los estudiantes en un circulo y van sacando cada
pregunta y asignándosela a los estudiantes. El proceso se termina
cuando todas las preguntas son asignadas a los estudiantes.
Programe el método necesario para asignar las preguntas a
los estudiantes. Asuma la existencia de los constructores y
selectores de las estructuras vistas en clase.
3.- Se desea simular la asignación de profesores a las materias, que
se realiza cada inicio de semestre. Se deberán colocar en una bolsa
las materias leídas por pantalla, y en otra bolsa los profesores que
dictarán clases en el semestre, leídos de igual forma por pantalla, no
podrá haber profesores ni materias repetidos. Luego se deberá
asignar por cada profesor una materia y guardar dicha información en
una estructura. Explique la estructura de datos que utilizaría para
implementa la asignación e Implemente un programa en Java.
Asuma la implementación de las estructuras vistas en clase.
Arboles
1. Escriba un procedimiento llamado crecer que tome como
argumento un árbol de número (representado por una lista) y
devuelva el árbol original pero sustituyendo las hojas(n) por nodos
que tengan como hoja izquierda n/2 (división entera) y como hoja
derecha n/2 si n es par y (n mod 2) si n es impar. Debe retornar #f si
el argumento no es un árbol o es un árbol, de un sólo nodo.
2. Elabore un método de que reciba una matriz de números y genere
un árbol binario de búsqueda a partir de los elementos de la matriz.
3. Dos árboles binarios de búsquedas son similares, si ambos son
vacíos ó si ambos no vacíos, tienen subárboles izquierdo y derecho
similares. Elabore un método que permita indicar si dos árboles
binarios de búsquedas son similares.
4. Dos árboles son isomórficos, si T1 puede ser transformado en T2,
por el intercambio de algunos de los hijos de los dos árboles (no
todos). Elabore un método que indique si dos árboles T1 y T2 son
isomórficos.}
5. Escriba los métodos necesarios para determinar:
La cantidad de nodos de un árbol binario
La suma del contenido de todos los nodos en un árbol
binario
c. La profundidad del un árbol binario.
a.
b.
6. Escriba los métodos para determinar si un árbol binario es:
a.
b.
c.
Estrictamente binario
Completo
Incompleto
7. Elabore un método que dado un árbol binario de números y un
número recibido como parámetro, permita podar el árbol, utilizando
el siguiente criterio:
Para aquellos nodos que son padre de hojas :
·
Si su contenido sea igual a número recibido como
parámetro, se eliminan todos los hijos de éste.
·
de lo contrario, se evalúa si el nodo es par, en cuyo caso se elimina el hijo izquierdo y si
es impar, el hijo derecho.
Indique además, el orden de crecimiento en tiempo del método escrito por usted.
8. Elabore un método que reciba un árbol binario y una pila, de números (ambas estructuras se
encuentran desordenadas) y genere un vector con los elementos de ambas estructuras en forma
ordenada. Justifique el método de ordenamiento que utilizó e indique el orden de
crecimiento en tiempo del mismo.
9. Elabore un método en Java que dado dos árboles binarios, permita
determinar, si son similares. Es decir, si ambos están vacíos ó en caso de
que no estén vacíos, si sus subárboles izquierdos son similares y sus
subárboles derechos son similares.
10. Elabore un método en Java que dado un árbol binario de
búsqueda, permita determinar si el árbol están correctamente
formado.
11. Dado un árbol binario, elabore un método en java que permita
calcular la cantidad de nodos hojas que contiene el árbol.
Algoritmos de ordenamiento y búsqueda
1.- Escriba el algoritmo de Seleccion Sort recursivamente.
2.- Modifique el algoritmo de Inserción para que ordene el arreglo
indirectamente. Esto requiere una arreglo que contiene los indices del
arreglo que se desea ordenar. El algoritmo hace los cambios en el
arreglo de indices y deja los datos originales sin modificar.
3.- Escriba el algoritmo de Inserción recursivamente.
4.- Modifique cada uno de los algoritmos vistos para que ejecuten el
ordenamiento en orden decreciente (de mayor a menor)
5.- Modifique el algoritmo de la Burbuja para que se detenga en cuanto
el arreglo esté completamente ordenado.
6.- Modifique el algoritmo QuickSort para que tome como pivote el
ultimo elemento en lugar del primer elemento de la secuencia.
7.- Modifique el algoritmo QuickSort para que tome como pivote la
mediana entre el primer, el del medio y el ultimo elemento en lugar del
primer elemento de la susecuencia.
8.- Dado un vector cualquiera, que contiene objetos con distintos
atributos, defina un método que implemente el Mergesort sobre el
vector, para cualquiera de los atributos del mismo. El método debe
aceptar como parámetros el vector, el número del atributo por el cual
se quiere ordenar (clave) y el orden que se desea (ascendente o
descendente).
9.- En cada una de las siguientes preguntas marque con una X la
respuesta correcta. (4 ptos)
A.- Los siguientes algoritmos se ejecutan con un orden O(n2)
a.- BubbleSort, MergeSort e InsertionSort.
b.- MergeSort, SelectionSort e InsertionSort
c.- SelectionSort, BubbleSort e InsertionSort.
d.- Todas las anteriores
e.- Ninguna de las anteriores.
B.- Los siguientes algoritmos se ejecutan con un orden O(nlogn)
a.- MergeSort y ShellSort.
b.- MergeSort y SelectionSort.
c.- QuickSort e InsertioSort.
d.- Todas las anteriores.
e..- Ninguna de las anteriores.
C.- Dada el siguiente arreglo:
{ 47 3 21 32 56 92}
después de dos pasadas del algoritmo de ordenamiento, el
arreglo ha quedado asi:
{ 3 21 47 32 56 92}
¿Qué algoritmo de ordenamiento se está utilizando?
a.- BubbleSort
b.- SelectionSort
c.- InsertionSort.
d.- Ninguno de los anteriores
D.- Se tiene un arreglo con los siguientes elementos
{3 13 7 26 44 }
¿Cuántas comparaciones y cuantos intercambios se requieren si
se aplica el algoritmo BubbleSort?
a.- 12 comparaciones y un intercambio
b.- 11 comparaciones y un intercambio
c.- 10 comparaciones y un intercambio
d.- Ninguna de las anteriores.
E.- Los siguientes algoritmos son naturalmente recursivos
a.- SelectionSort y MergeSort
b.- InsertionSort y QuickSort
c.- QuickSort y MergeSort
d.- Todas las anteriores
e.- Ninguna de las anteriores
F.- De los seis algoritmos de ordenamiento vistos cual es el mas
lento?
a.- InsertionSort
b.- QuickSort
c.- SelectionSort
d.- Ninguno de los anteriores
10.- Escriba un método en Java para ejecutar el algoritmo de
búsqueda binaria en forma recursiva . Escriba un método en Java para
ejecutar el algoritmo de búsqueda binaria en forma no-recursiva.
11.- El algoritmo ShakerSort es el mismo que el de la Burbuja pero
este alterna el proceso de “hacer flotar la burbuja” y o “hundirla”….
Escriba un método en Java para representar este algoritmo de manera
que el arreglo al cual se le aplique quede ordenado en forma
descendente (de mayor a menor).
12.- Explique el comportamiento de cada uno de los algoritmos
Quicksort, Inserción, Selección, Burbuja,
para los siguientes casos:



Vector completamente desordenado.
Vector ordenado con un solo elemento fuera de su lugar.
Vector ordenado.
13.- Se tiene una matriz NxN de números y se desean ordenar las filas
de la matriz, elabore un método que reciba la matriz y permita ordenar
sus filas. ¿Cuál algoritmo utilizó y porque? Indique el orden de
crecimiento del algoritmo programado.
14.- Responda las siguientes preguntas y justifique brevemente su
respuesta en cada caso:
a.- ¿Cuáles son las consideraciones mas importantes para
seleccionar un método de ordenamiento?
b.- ¿Cuáles son las ventajas y desventajas del Método de la Inserción?
c.- Indique las acciones necesarias para ordenar la secuencia 20 52 45
35 15 80 76 25 utilizando el método de Selección.
15.- Se tienen tres listas doble enlace de los estudiantes de las tres
secciones de estructura de datos, las tres listas se encuentran
ordenadas por carnet. Elabore un método en Java que permita, crear
una nueva lista de todos los estudiantes en las tres secciones, que se
encuentre ordenada por carnet, deberá aplicar
mergesort para crear la nueva lista ordenada.
RETOS
el
método
de
1.- Un triangulo rectangulo puede tener lados que sean enteros. El
conjunto de tres valores enteros para los lados de un triangulo
rectangulo(cateto1, cateto2, hipotenusa) es una tripleta pitagorica.
Estos tres lados deben satisfacer la relacion de que la suma de los
cuadrados de los dos catetos debe ser igual al cuadrado de la
hipotenusa. Escriba un programa en Java que descubra todas las
tripletas pitagoricas posibles de numeros entre 1 y 500.
2.- Escriba una aplicacion en Java que permita escribir la canción
inglesa "Los doce dias de Navidad" ("The Twelve days of Christmas").
Esta cancion comienza con las palabras "En el primer dia de Navidad
mi amada me regaló:......", en las estrofas 2 hasta la doce se deberá
cambiar la palabra primero por segundo, tercero y asi
sucesivamente..
Los regalos son en orden de aparicion:
1) Una perdiz en un peral
2) Dos tortolas
3) tres gallinas francesas
4) cuatro aves cantoras
5) cinco anillos de oro
6) seis gansos empollando
7) siete cisnes nadando
8) ocho campesinas ordeñando
9)nueves damas bailando
10)diez nobles brincando
11) once gaiteros tocando
12) doce tambores tamborileando.
En la primera estrofa solo se agrega el regalo numero 1, en la
segunda se agrega el regalo 2 y el 1; y asi sucesivamente. cabe
destacar que en todas las estrofas menos la primera debe agregarse
la conjuncion "y" de modo que diga "y una perdiz en un peral".
3.- La compañía Evencro, acaba de contratar para 8 funciones a un
cantante de fama internacional, cada función la tiene almacenada en
un vector, donde las casillas del vector contienen la cantidad de
entradas a vender, la cantidad de entradas vendidas y una pila de
asientos, con la fila y número del asiento.
Las personas que desean comprar entradas, se encuentran
almacenadas en una cola de personas, con su cedula, nombre,
función a adquirir las entradas y cantidad de entradas.
Las clases para el desarrollo del programa en Java se encuentran
definidas con los siguientes atributos y métodos:
class CVector
<<atributos>>
- CCasilla Vec[]
<<métodos>>
+CVector(int n)
+getVector(
):CCasilla
+setVector(CCasilla
obj)
+getLength( ):int
class CCasilla
<<atributos>>
- int totalBoletos
- int totalVendidos
- CPilal pilaBoletos
<< métodos >>
class CPilal
<<atributos>>
- CnodoP cabeza
- CnodoP cola
<< métodos >>
+CPilal( )
Class CnodoP
<<atributos>>
-int numeroFila
-int numeroAsiento
<<métodos>>
+CnodoP( )
+CCasilla( )
+push(obj
CnodoP)
+pop( ): CnodoP
+top( ) : CnodoP
+getFila( ):int
+getBoletos( ):int
+getVendidos(
):int
+getPilaBoletos( ):
CPilal
+pilaVacia(
):boolean
class CColal
<<atributos>>
- CnodoC cabeza
- CnodoC cola
<< métodos >>
+CColal( )
Class CnodoC
<<atributos>>
-int cedula
-String nombre
-int cantEntradas
-int numFunción
class CListaSimple
<<atributos>>
- CnodoL cabeza
- CnodoL cola
<< métodos >>
+CListaSimple( )
+encolar(obj CnodoC)
<<método>>
+desencolar( ):
CnodoC
+primeroCola( ) :
CnodoC
+colaVacia( ): boolean
+CnodoC( )
+insertarInicio(obj
CnodoL)
+eliminarInicio( ):
CnodoL
+insertarFinal(obj
CnodoL)
+eliminarFinal( ):
CnodoL
+eliminarPos( ):
CnodoL
+getCedula( ):int
+getNombre(
):String
+getEntradas( ):int
+getFuncion( ):int
+getAsiento( ):int
Class CnodoL
<<atributos>>
-int cedula
-String nombre
-int numeroFila
-int
numeroAsiento
-int numFunción
<<métodos>>
+CnodoL( )
+getCedula( ):int
+getNombre(
):String
+getFila( ):int
+getAsiento( ):int
+getFuncion(
):int
class CSet
<<atributos>>
- CnodoS cabeza
<< métodos >>
+CSet( )
+adjoin(obj
CnodoS):boolean
+empty( ): boolean
+pick( ) : CnodoS
Class CnodoS
<<atributos>>
-int numeroPremio
-String DesPremio
<<métodos>>
+CnodoS( )
+getNumero( ):int
+getPremio(
):String
+residue( ):CnodoS
+member(CnodoS):boolean
Usted deberá realizar los métodos para:
a.- Sacar a las personas de la cola y asignarles la cantidad de boletos
que solicitan, esto se logra, sacando de la pila de la función
correspondiente, tantos boletos como desean las personas y creando
en una lista simple un nodo por cada boleto vendido, a una persona.
b.- Elaborar un, método que elimine a todas las personas que se
encuentran en la cola, solicitando boletos para una función agotada.
El número de la función que se encuentra agotada es conocido.
c.- Indicar la cantidad promedio de boletos vendidos para todas las
funciones.
d.- Si se tiene un conjunto de premios, donde sne encuentran
almacenados un número de premio y la descripción del mismo.
Elabore un método para sacar del conjunto todos los premios y
asignarlos a las personas que ya han comprado boletos (las cuales se
encuentra en la lista de boletos vendidos). Las personas que ganan el
premio son buscadas con el número del premio que representa la
posición dentro de la lista.
Descargar