324 MR Versión 1 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA 1° Prueba Integral Lapso 2012-1 1/5 Semana 28 MODELO DE RESPUESTA ASIGNATURA: Computación II MOMENTO: Primera Integral FECHA DE APLICACIÓN : 14/07/2012 MOD. I, UND. 1, OBJ.1 • • • • • CÓDIGO: 324 CRITERIO DE DOMINIO 1/1 Tipo Abstracto de Datos. El siguiente es un modelo del TAD: a) Se propone el uso de Matrices y las operaciones Insertar: inserta una palabra x en la matriz. Eliminar: elimina una palabra x, puede ser según la posición o por la palabra en sí. Buscar: busca una palabra. Localizar: obtiene la posición de una palabra. Vaciar: borra todas las palabras Figura 1. Esquema de la matriz b) Tipo de Dato (PASCAL): Const N = 100; Type Cadena = string(15); matriz = array[1..N,1..2] of cadena; var A : matriz; Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 1° Prueba Integral Lapso 2012-1 2/5 Procedure Buscar (var A: matriz, palabra: cadena); var i : integer; palabra : cadena; Encontrado : boolean; begin i=1 Encontrado=false While (not Encontrado and i<=N ) do begin if palabra=A(i,1) then begin writeln (´Sinonimo: ',A(i,2)); Encontrado= true; i=i+1; end; end; if (not Encontrado) then writeln('Palabra no encontrada '); end; \*Fin Buscar 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 Búsqueda en el archivo MOD. I, UND. 2, OBJ. 2 CRITERIO DE DOMINIO 1/1 1- Estructuras lineales de datos a- La estructura de datos mas apropiada es la de colas, en donde los elementos son atendidos estrictamente por orden de llegada (FIFO). Se mantienen apuntadores a la cabeza y fin de la cola, (ver Figura 2). b- Una cola es una estructura de datos caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. Las operaciones más comunes son: buscar cola según el tipo, insertar en la cola, eliminar de la cola, cola vacía, cola llena y longitud de la cola, entre otras. Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 1° Prueba Integral Lapso 2012-1 3/5 Figura 2 c) Especificación de las estructuras de datos y procedimiento Solicitudes El procedimiento Solicitudes; consiste en crear una cola de solicitudes y atenderlas por numero de solicitud. program colas; uses WinCrt; const N=5; Type tcola = ^nodo; nodo = Record Num_repuesto : integer; Num_solicitud: integer; sig : tCola; end; TArr = array[1..N,1..2] of integer; var matriz : TArr; repuesto: integer; ch : char; cab,fin: tcola; Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 1° Prueba Integral Lapso 2012-1 4/5 Procedure Solicitudes(var matriz: Tarr; Var cab : tcola; Var fin:tcola ); Var nuevo : tcola; aux: tcola; numsol, numrep,cantidad :integer; begin repeat if not Vacia(cab) then begin numsol := cab^.Num_solicitud; numrep := cab^.Num_repuesto; writeln ('Numero Sol: ',numsol,' Numero Rep: ',numrep); writeln; BuscarTabla(matriz,numrep,cantidad); if cantidad= 0 then writeln (' No hay existencias del repuesto') else writeln ('Hay ',cantidad,' unidades'); aux:= cab^.sig; dispose(cab); cab:=aux; end else writeln ('La cola esta vacia'); until (cab=nil); end; 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 colas. MOD. II, UND. 3, OBJ. 3 CRITERIO DE DOMINIO 1/1 2- Operación con un árbol binario. const N=3; Type TipoDato= string[15]; cadena= string[15]; { Vamos a guardar texto, por ejemplo } Puntero = ^TipoBase; { El puntero al tipo base } Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 TipoBase = record dato: cadena ; hijoIzq: Puntero; hijoDer: Puntero; end; 1° Prueba Integral Lapso 2012-1 5/5 { El tipo base en sí: } { - un dato } { - puntero a su hijo izquierdo } { - puntero a su hijo derecho } TArr = array[1..N,1..N] of cadena; var matriz : TArr; palabra: cadena; ch : char; 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 deben especificar la estructura de datos empleada. FIN DEL MODELO Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez