Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Número de originales: 1
Lapso: 2022-1
ESPECIFICACIONES DEL TRABAJO SUSTITUTIVO DE PRUEBAS
M: 1, U: 1, O: 1
C/D: 1/1
Cantidad(1)= 0
Cantidad(2)= 2750
Cantidad(3)= 0
Cantidad(4)= 0
Cantidad(5)= 2950
Respuesta: M: 1, U: 1, O: 1
Parte B. Dos operaciones con este TAD son Ingresar y Eliminar un elemento.
C/D: 1/1
15
30
6
12
9
33
6
21
8
17
Tabla No.1
Realice lo siguiente:
a) Determine cuál es el tipo de lista más apropiada a la situación. Justifique su
respuesta.
b) Codifique en C++ la creación de la lista e implemente un procedimiento llamado
“insertinicio” que cree los valores al principio de la lista dada, y un procedimiento
llamado “reportlista” donde se muestren los resultados de los dos procedimientos.
Especifique las estructuras de datos en C++.
Respuesta: M: 1, U: 2, O: 2
La clase lista contiene el puntero de acceso a la lista enlazada, que apunta al nodo
cabeza; también se puede declarar un puntero al nodo cola. Las funciones de la clase
lista implementan las operaciones de una lista enlazada: inserción, búsqueda, etc. El
constructor inicializa primero a NULL, (lista vacía). Además, insertinicio()
construye iterativamente el primer elemento (primero) y los elementos sucesivos
de la lista enlazada, la función reportlista() recorre la lista y muestra los datos en
pantalla.
Creación de lista y procedimientos insertLista y reportLista
void tListas::reportLista()
{
nodo* n;
int k = 0;
n = apt;
while (n != 0)
{
char c;
k++; c = (k%15 != 0 ? ' ' : '\n');
cout << n → datoNodo() << c;
n = n → sigNodo();
}
}
int main()
{
tElem d;
tListas lista; // crea lista vacía
lista.insertInicio();
cout << "\t Elementos de la lista introducidos" << endl;
lista.reportLista();
return 0;
}
M: 2, U: 3, O: 3
C/D: 1/1
b) Codifique en el lenguaje C++ una función que simule la operación Distribuir discos
compactos, en dos grupos, de manera que se puedan calificar respetando el orden de
llegada, con respecto a cada sección. Previamente describa en C++ la estructura de
datos y las variables a emplear. Suponga que los datos de cada disco están correctos.
Respuesta: M: 2, U: 3, O: 3
Parte a. El TAD más adecuado para resolver el problema planteado es una cola, la
cual es un tipo especial de lista en la cual se insertan los datos en un extremo —al final o
fondo— de la lista y se suprimen en el otro —inicio o frente—, el recorrido se hace como
siempre desde a1 a an. Se conocen también como listas FIFO (first-in first-out) o «listas
primero en entrar primero en salir». En nuestro caso el primer trabajo que se recibe es el
primero a calificar.
El dato de las celdas o nodos de nuestro TAD serían fichas (struct) contentivas de la
cedula de identidad (un entero) y la sección «A» o «B» del alumno (un carácter). El
procedimiento debe resultar en dos colas, una por sección, construidas a partir de la cola
original y por tanto manteniendo el mismo orden de llegada.
Creamos la clase ColaStd que contiene la clase nodo como interna, los nodos están
formados por registros por eso en el archivo de cabecera definimos el dato del nodo
(elemento) como una variable de tipo Alumno que es una estructura formada por un entero
largo sin signo para la cedula y un tipo enumerado para la sección. Esta clase contiene el
TAD a usar a implementar.
int main()
char car;
do // leer los dos datos
{
cout << "\t Introduzca los datos del TP \n";
cout << "Cedula: \n";
cin >> tp.cedula;
cout << "\t Intruduzca la seccion ('A' o 'B'): ";
cin >> tp.seccion;
colaTP.InsertaFin(t);
cout << "\t teclee 'S' o 's' para salir: ";
cin >> car;
}
while ((car != 's') and (car != 'S')) ;
// clasificar los TP por sección y ponerlos en colas A y B
while (!colaTP.EstaVacia()) //mientras la cola no esté vacía
{
tp= colaTP.ObtInicio();
if (tp.seccion == 'A' )
//inserta el dato al final de la cola de la sección A
colaTP0.InsertaFin(tp);
else
//inserta el dato al final de la cola de la sección B
colaTP1.InsertaFin(tp);
// quitar el elemento de la cola genérica
colaTP.ElimInicio();
}
endl;
return 0; //Fin
}
M: 2, U: 4, O: 4
C/D: 1/1
4. Sean dos árboles binarios de búsqueda, cuyos elementos son números enteros. Elabore
una función C++ que determine si un número dado está en ambos árboles. (Ver Figura
1)
Respuesta: M: 2, U: 4, O: 4
ArbolBinStd<T>.