324 MR Versión 1 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA 1° Prueba Integral Lapso 2013-1 1/6 Semana 12 MODELO DE RESPUESTA ASIGNATURA: Computación II MOMENTO: Primera Integral FECHA DE APLICACIÓN: 23/03/2013 MOD. I, UND. 1, OBJ.1 1.- Solución. • • • • CÓDIGO: 324 CRITERIO DE DOMINIO 1/1 Tipo Abstracto de Datos. El siguiente es un modelo del TAD: Se propone el uso de Matrices y las operaciones Insertar: inserta número de cédula del alumno (clave), Apellido, Nombre, Grado, sección, materia, nota en la matriz. Eliminar: elimina un Alumno por la clave. Buscar: busca un alumno por la clave. Localizar: obtiene los datos del alumno por la clave. Figura 1. Esquema de la matriz b) Tipo de Dato (PASCAL): const N = 2; M = 10; Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 1° Prueba Integral Lapso 2013-1 2/6 TYPE cadena=string[15]; TArr = ARRAY[1..N,1..4] OF cadena; TArr1 = ARRAY[1..N,1..3] OF cadena; var matriz : TArr; matriz1 : TArr1; dato: cadena; ch : char; Procedure Construir(var m : TArr); var i : integer; dato : cadena; BEGIN i:=1; WRITELN('<< Carga de Matriz >>'); WHILE i<=N DO BEGIN {CLRSCR;} WRITE('Ingrese cedula '); READLN(dato); m[i,1]:= dato; WRITE('Ingrese Apellido '); READLN(dato); m[i,2]:= dato; WRITE('Ingrese Nombre '); READLN(dato); m[i,3]:= dato; WRITE('Ingrese Sección '); READLN(dato); m[i,4]:= dato; i:=i+1; END; END; Procedure ConstruirMatria (var l : TArr1); var k : integer; dato : cadena; BEGIN k:=1; WRITELN('<< Carga de Matriz de Notas >>'); WHILE k<=M DO Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 1° Prueba Integral Lapso 2013-1 3/6 BEGIN {CLRSCR;} l[k,1]:= dato; WRITE('Ingrese Materia '); READLN(dato); l[k,2]:= dato; WRITE('Ingrese Nota '); READLN(dato); l[k,3]:= dato; k:=k+1; END; END; 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 3 operaciones posibles. Para cumplir con lo exigido en la sección b) debe implementarse correctamente la operación Construir. MOD. I, UND. 2, OBJ. 2 CRITERIO DE DOMINIO 2 .- Estructuras lineales de datos a) La estructura de datos mas apropiada es la de listas, Una lista enlazada es una colección lineal de elementos donde el orden de los mismos se establece mediante punteros, ver figura2: Fig. N°2 b) El TAD apropiado es una lista enlazada. Una lista enlazada es una estructura de datos lineal compuesta por nodos, en la cual cada nodo almacena un dato y Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 1° Prueba Integral Lapso 2013-1 4/6 una referencia al nodo que le sigue en la estructura. La lista contiene una referencia al primer nodo de la misma. A partir de este, cada nodo tiene una referencia al siguiente, hasta el último, cuya referencia al siguiente tiene valor null. c) Especificación de las estructuras de datos y procedimiento CrearListaBarcos, que consiste en crear una lista de barcos por Nº de entrada al puerto. program listas; uses WinCrt; const N= 2; Type tcadena = string[30]; tent = string[4]; tlista = ^nodo; nodo = Record nom_bre : tcadena; hinter_land : tcadena; fore_land : tcadena; conte_nedor : tcadena; sig : tlista; end; cabecera = Record num_ent : tent; fecha : tcadena; prox : tlista; end; control_lista = ARRAY[1..N] OF cabecera; var cabecera_vuelo: control_lista; Procedure CrearListaBarcos( var A: control_lista); var entrada: tent; nom, fore,hinte,conte : tcadena; ch : char; i : integer; sw : boolean; Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 1° Prueba Integral Lapso 2013-1 5/6 begin ch := 'S'; WRITELN('<< Carga de listas >>'); while (ch = 'S') do begin WRITE('Ingrese No. de Entrada '); READLN(entrada); BuscarBarco(A, entrada, sw); if sw=true then begin WRITE('Ingrese Nombre '); READLN(nom); WRITE('Ingrese Hinterland '); READLN(hinte); WRITE('Ingrese Foreland '); READLN(fore); WRITE('Ingrese Contenedor '); READLN(conte); CargaBarcos( A, i, nom, hinte, fore,conte); end; writeln( ' Hay mas barcos ? readln(ch); S/N'); end; end; {CrearListaBarcos} Criterio de corrección: Se logra el objetivo si se realiza correctamente todo lo solicitado en las tres secciones de la pregunta, debe utilizar manejo dinámico de memoria y la estructura de listas enlazadas. MOD. II, UND. 3, OBJ. 3 CRITERIO DE DOMINIO 1/1 3.- Operación con un árbol binario. program expresion; { Se extraen símbolos y números de una matriz NxN y se insertan en un árbol de búsqueda} uses WinCrt; const N=2; Type TipoDato= integer; Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 Puntero = ^TipoBase; TipoBase = record dato: integer ; hijoIzq: Puntero; hijoDer: Puntero; end; 1° Prueba Integral Lapso 2013-1 6/6 { El puntero al tipo base } { El tipo base en sí: } { - un dato numérico} { - puntero a su hijo izquierdo } { - puntero a su hijo derecho } TArr = array[1..N,1..N] of TipoDato; procedure Insertar(var punt: puntero; x: TipoDato); var AUX, AUX1, NUEVO : puntero; begin AUX := punt; AUX1 := punt; while (AUX <> nil) do begin AUX1 := AUX; if (x <= AUX^.dato) then AUX := AUX^.hijoIzq else AUX := AUX^.hijoDer end; NUEVO := NuevoNodo(x); if (punt = nil) then punt := NUEVO else if (x <= AUX1^.dato) then AUX1^.hijoIzq := NUEVO else if (x > AUX1^.dato) then AUX1^.hijoDer := NUEVO; end; Criterio de corrección: Se logra el objetivo si se resuelve el problema planteado empleando una estructura de árbol binario. Se debe especificar la estructura de datos empleada. FIN DEL MODELO Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez