324 MR Versión 1 Semana 10 Prueba Integral Lapso 2015-2 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II MOMENTO: Prueba Integral FECHA DE APLICACIÓN: 05-03-2016 MOD. I, UND. 1, OBJ.1 CÓDIGO: 324 CRITERIO DE DOMINIO 1/1 1- a) TAD: Para representar cada cadena de dígitos binarios se propone el uso del TAD cadena de caracteres o string. Otra manera de representar a cada cadena es empleando una estructura de vector unidimensional de caracteres cuyos únicos caracteres son ceros y unos. b) Operación Gray void gray(string cad, string &cadnueva) { int i; cadnueva[0] = cad[0]; for(i=1; i < N;i++) cadnueva[i] = Xor(cad[i-1], cad[i]); } Criterio de corrección: Se logra el objetivo si se construye un TAD semejante, considerando operaciones apropiadas. Es obligatorio elaborar correctamente la especificación del TAD y la operación Gray en lenguaje C++. Especialista: María E. Mazzei Ingeniería de Sistemas Evaluador: Sandra Sánchez 324 MR Versión 1 Semana 10 Prueba Integral Lapso 2015-2 MOD. I, UND. 2, OBJ. 2 2/3 CRITERIO DE DOMINIO 1/1 2- TAD lista circular a- Codificación de la estructura: btypedef struct nodo { //tipo Nodo int numero; int dist ; struct nodo* sig; //apuntador al nodo sig }nodo; typedef nodo *apunt; //tipo apuntador b- Operación Recorrido de la lista circular con cálculo de la distancia recorrida void Recorrido( apunt L) { apunt ptaux; int acumdista; bool no_destino; acumdista = 0; no_destino = true; if (L == NULL) { cout <<"Lista Vacia" << endl; } else { ptaux = L; while (no_destino) { acumdista= ++ ptaux->dist; printf("\n Visito ciudad %d",ptaux -> numero); ptaux = ptaux->sig; if (ptaux == L) no_destino = false; } printf("\n La distancia recorrida es%d",acumdista); } } Criterio de corrección: Se logra el objetivo si se elabora correctamente la estructura de datos tipo lista circular con manejo dinámico de memoria y se elabora correctamente la función en C++ denominada Recorrido que visita cada nodo y acumula la distancia recorrida. Especialista: María E. Mazzei Ingeniería de Sistemas Evaluador: Sandra Sánchez 324 MR Versión 1 Semana 10 Prueba Integral Lapso 2015-2 MOD. I, UND. 3, OBJ. 3 3/3 CRITERIO DE DOMINIO 1/1 3- TAD cola i) Función de distribución en tres colas void Distribuir(apunt &C, apunt &F, apunt &C1, apunt &F1, apunt &C2, apunt &F2, apunt &C3, apunt &F3) { apunt pt, ptaux; int a,b; if (ColaVacia(C)== false) { pt = C; while (pt != NULL) { Extrae nodo a la cabeza de la cola ptaux = EliminarEnCola(C,F); general a = ptaux-> numero; b = ptaux-> operacion; if ((b >=1)&&(b <= 3)) InsertarEnCola(C1,F1,a,b); else if ((b >= 4)&&(b <= 6)) InsertarEnCola(C2,F2,a,b); else InsertarEnCola(C3,F3,a,b); delete ptaux; pt = C; Inserta en Cola 1 Inserta en Cola 2 Inserta en Cola 3 } } } ii) Estructura de datos typedef struct nodo //tipo Nodo int numero; int operacion ; struct nodo* sig; }nodo; { typedef nodo *apunt; // apuntador al nodo siguiente //tipo apuntador Criterio de corrección: Se logra el objetivo si se elabora correctamente la estructura de datos tipo cola con manejo dinámico de memoria y se elabora Especialista: María E. Mazzei Ingeniería de Sistemas Evaluador: Sandra Sánchez 324 MR Versión 1 Semana 10 Prueba Integral Lapso 2015-2 4/3 correctamente la función Distribuir, en C++, que reparte los clientes en 3 colas según el tipo de operación que van a realizar. MOD. II, UND. 4, OBJ. 4 CRITERIO DE DOMINIO 1/1 4- TAD árbol Función recursiva Grado void Grado(apunt pt, int &grado) { if ((pt->izq == NULL)&&(pt->der == NULL)) grado = 0; else if((pt->izq == NULL)||(pt->der == NULL)) grado = 1; else grado = 2; } Esta función será invocada desde la función recursiva HalleElemento, que busca el elemento en cuestión. El indicador ind se emplea para informar desde el programa principal si el elemento no está en el árbol y emitir el mensaje. void HalleElemento(apunt apt, int numero, bool ind) { int grado; if (apt != NULL) { if (numero == apt-> num) { Grado(apt,grado); printf("\n El grado del nodo es %d ", grado); 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 10 Prueba Integral Lapso 2015-2 5/3 Estructura de datos typedef struct nodoarbol { //tipo Nodo int num ; struct nodoarbol* izq; struct nodoarbol* der; }nodoarbol; typedef nodoarbol *apunt; // apuntador al nodo izquierdo //tipo apuntador Criterio de corrección: Se logra el objetivo si se elabora correctamente la estructura de datos tipo árbol 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 y el grado del nodo en donde se encuentra. Nota: Para codificar, compilar y posteriormente ejecutar los algoritmos diseñados en C++, se empleó Dev C++. FIN DEL MODELO DE RESPUESTA Especialista: María E. Mazzei Ingeniería de Sistemas Evaluador: Sandra Sánchez