324 MR Versión 1 2da. Prueba Parcial 1/3 Semana

Anuncio
324 MR
Versión 1
Semana 5
2da. Prueba Parcial
Lapso 2015-2
1/3
UNIVERSIDAD NACIONAL ABIERTA
VICERRECTORADO ACADÉMICO
ÁREA INGENIERÍA
MODELO DE RESPUESTA
ASIGNATURA: Computación II
MOMENTO: Segunda Prueba Parcial
FECHA DE APLICACIÓN: 30 /01 /2016
MOD. I, UND. 3, OBJ. 3
CÓDIGO:
VERSIÓN
324
1
CRITERIO DE DOMINIO 1/1
1- Problema de pilas
a- La estructura de datos más apropiada es la pila. Esto se justifica por la
naturaleza del problema en donde se almacenan lotes de discos de acuerdo
a la disciplina LIFO.
b- Estructura de datos en C++:
typedef struct nodopila
{
string ci;
char seccion ;
struct nodopila* prox;
} nodopila;
//tipo Nodo
// apuntador al nodo siguiente
typedef nodopila *apunt;
//tipo apuntador
c- Función para la distribuir los discos en dos pilas
void DistribuirEnDosPilas(apunt &tope, apunt &topea, apunt &topeb)
{
apunt pt;
string c;
char d;
while (!PilaVacia(tope))
{
SacarDeLaPila(tope, c, d);
if (d == 'A') MeterEnLaPila(topea,c,d);
else MeterEnLaPila( topeb,c,d);
}
}
Especialista: María E. Mazzei
Ingeniería de Sistemas
Evaluador: Sandra Sánchez
324 MR
Versión 1
Semana 5
2da. Prueba Parcial
Lapso 2015-2
2/3
Al distribuir las dos pilas en las pilas A y B hay que invertir cada una de ellas a
efecto de dejar los discos en el orden original. Las funciones SacarDeLaPila y
MeterEnLaPila son las normales del TAD Pila que se emplearán para invertir las
pilas dentro de una función que invoque a ambas y restaure el orden original. A
continuación se presentan ambas funciones:
void MeterEnLaPila( apunt &tope, string ced, char secc )
{
apunt pt;
pt = new nodopila;
pt->ci = ced;
pt-> seccion = secc;
pt->prox = tope;
tope = pt;
}
void SacarDeLaPila(apunt &tope, string &a, char &b )
{
apunt pt;
if (PilaVacia(tope)) cout << " Pila vacia ";
else
{
a = tope->ci;
b = tope-> seccion;
pt = tope->prox;
delete tope;
tope = pt;
}
}
La función PilaVacia es booleana y verifica si la Pila está o no vacía:
bool PilaVacia(apunt tope)
{
if ( tope == NULL) return true;
else return false;
}
Especialista: María E. Mazzei
Ingeniería de Sistemas
Evaluador: Sandra Sánchez
324 MR
Versión 1
Semana 5
2da. Prueba Parcial
Lapso 2015-2
3/3
Nota: El programa fue realizado en DevC++. Se trata de un ambiente libre
integrado de desarrollo para operar con C y con C++, que funciona con el
compilador Mingw
Criterio de corrección: Se logra el objetivo si se elabora correctamente la
estructura de datos tipo pila con manejo dinámico de memoria y se elabora
correctamente una función en C++ que distribuya los discos en dos pilas: A y B.
MOD. II, UND. 4, OBJ. 4
CRITERIO DE DOMINIO 1/1
2- Problema de árboles binarios
Estructura de datos:
typedef struct nodoarbol
{ //tipo Nodo
int num ;
struct nodoarbol* izq; // apuntador al nodo izquierdo
struct nodoarbol* der;
}nodoarbol;
typedef nodoarbol *apunt; //tipo apuntador
Función recursiva
void HalleElemento(apunt apt, int numero, bool &ind)
{
if (apt != NULL)
{
if (numero == apt-> num)
{
ind = true;
apt = NULL;
}
else
{
HalleElemento(apt-> izq,numero,ind);
HalleElemento(apt-> der,numero,ind);
}
}
}
Especialista: María E. Mazzei
Ingeniería de Sistemas
Evaluador: Sandra Sánchez
324 MR
Versión 1
Semana 5
2da. Prueba Parcial
Lapso 2015-2
4/3
La variable ind se emplea para detectar si el número está en un árbol.
Es posible transformar esta función de búsqueda en una de tipo booleano que
devuelva el valor verdadero o falso según el caso y sin necesidad de emplear la
variable ind. Esta función sería más eficiente.
Esta función se invocará desde la función principal. La sección de la función
main que lee el número a buscar e invoca la función HalleElemento se presenta
a continuación:
cout << "Introduzca numero a buscar en ambos arboles ";
cin >> numero;
EstaEnA = false;
Busca el número dado en
EstaEnB = false;
árbol A
HalleElemento(apa,numero,EstaEnA);
HalleElemento(apb,numero,EstaEnB);
Busca el número dado en
if (EstaEnA && EstaEnB)
árbol B
cout << " Esta en A y en B" ;
else if(EstaEnA)
cout << " Esta en A " ;
else if (EstaEnB)
cout << " Esta en B " ;
else
cout << "No esta en ninguno de los dos";
Criterio de corrección: Se logra el objetivo si se elabora correctamente la
estructura de datos tipo árbil con manejo dinámico de memoria y se elabora
correctamente una función en C++ que halle un elemento dado en un árbol de
búsqueda.
FIN DEL MODELO DE RESPUESTA
Especialista: María E. Mazzei
Ingeniería de Sistemas
Evaluador: Sandra Sánchez
Descargar