324 MR Versión 1 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA 2° Prueba Integral Lapso 2012-1 1/6 Semana 44 MODELO DE RESPUESTA ASIGNATURA: Computación II MOMENTO: Segunda Integral FECHA DE APLICACIÓN: 27/10/2012 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 placa (clave), Fecha de entrada, Marca, Modelo, Año de fabricación, tipo de falla en la matriz. Eliminar: elimina un vehiculo x puede ser según la posición o por la clave. Buscar: busca un vehiculo por la clave. Localizar: obtiene la posición de un vehiculo. Figura 1. Esquema de la matriz b) Tipo de Dato (PASCAL): const N = 5; Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 2° Prueba Integral Lapso 2012-1 2/6 TYPE cadena=string[10]; TArr = ARRAY[1..N,1..N] OF cadena; var matriz : TArr; dato: cadena; ch : char; Procedure Atender (var m: TArr;dato:cadena); var i : integer; Encontrado : boolean; contenido : cadena; begin i:=1; Encontrado:=false; While not Encontrado and (i <= N) do begin if (dato = m[i,2]) then begin writeln ('Placa: ',m[i,1]); Encontrado:= true; end; i:=i+1; end; if (not Encontrado) then writeln('Dato no encontrado '); 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 Atender. Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 MOD. I, UND. 2, OBJ. 2 2° Prueba Integral Lapso 2012-1 3/6 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: Figura 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 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 nodo tiene valor null. c) Especificación de las estructuras de datos y procedimiento Insertar Pasajero, que; consiste en crear una lista de pasajeros por número de vuelo. Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 2° Prueba Integral Lapso 2012-1 4/6 program listas; uses WinCrt; const N= 2; Type tcadena = string[30]; tvuelo = string[5]; tci = string[15]; tlista = ^nodo; nodo = Record nom_bre : tcadena; ape_llido: tcadena; cedu_la : tci; sig : tlista; end; cabecera = Record num_vue : tvuelo; destino : tcadena; capacidad: integer; prox : tlista; end; control_lista = ARRAY[1..N] OF cabecera; var cabecera_vuelo: control_lista; procedure InsertarPasajero( var A : Control_lista; i : integer; nom: tcadena; ape : tcadena; ci: tci ); var ant, aux, nuevo : tlista; function CrearNodo: tlista; var apunt: tlista; begin new(apunt); with apunt^ do begin Nom_bre := nom ; Ape_llido:= ape ; cedu_la := ci ; sig := nil end; CrearNodo := apunt; end;{CrearNodo} Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 2° Prueba Integral Lapso 2012-1 5/6 begin aux := A[i].prox; nuevo := CrearNodo; if (aux <> nil) then begin while ( aux <> nil ) do begin ant := aux; aux := aux^.sig; end; ant^.sig := nuevo end {if} else A[i].prox := nuevo; A[i].capacidad := A[i].capacidad - 1; writeln( ' capacidad = ', A[i].capacidad); end;{InsertarPasajero} 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 arboleda; { Se extraen números de una matriz NxN y se insertan en un árbol de búsqueda} uses WinCrt; const N=3; Type TipoDato= integer; Puntero = ^TipoBase; TipoBase = record dato: integer ; hijoIzq: Puntero; hijoDer: Puntero; end; { 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 Colocar(var punt: puntero; x: TipoDato); var AUX, AUX1, NUEVO : puntero; Especialista: Nelly Escorcha Ingeniería de Sistemas Evaluador: Carmen Velásquez 324 MR Versión 1 2° Prueba Integral Lapso 2012-1 6/6 begin AUX := punt; AUX1 := punt; while (AUX <> nil) do begin AUX1 := AUX; if x= AUX^.dato then writeln('Número Duplicado:', x); if (x < AUX^.dato) then AUX := AUX^.hijoIzq else AUX := AUX^.hijoDer end; NUEVO := NuevoNodo(x); if (punt = nil) then punt := NUEVO { caso raiz} 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