guia semestral estructura de datos

Upload: fabian-mena

Post on 05-Jul-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/15/2019 Guia Semestral estructura de datos

    1/16

     

    1

    Guía semestral

    INF2240-01 Estructura de datos Escuela de Ingeniería InformáticaPontificia Universidad Católica de Valparaíso Rafael Mellado Silva | [email protected] 

  • 8/15/2019 Guia Semestral estructura de datos

    2/16

     

    2

    1  Presentación

     A continuación, se presenta una serie de ejercicios, los cuales son responsabilidad del alumno desarrol larlos en su totalidad

    de forma personal y como trabajo de estudio. Desarrolle un algoritmo para cada una de las siguientes situaciones:

    2   Algoritmos Simples

    1. 

    Desarrolle un programa que dado un numero (entero) por el usuario muestre por pantalla todos los divisores de dichonúmero, por ejemplo, si se ingresa el número 2, sus divisores son el 1 y el 2.

    2.  Desarrollar un programa que dada una cantidad de números (n, con ciclos iterativos de petición y que terminan cuandoel usuario ingrese 0) guarde el impar mayor y el par menor y luego los muestre por pantalla. Para saber si es par o impardeberá desarrollar una función que arroje 0 si es par y 1 en caso contrario.

    3.  Dada la Longitud de dos lados de un triángulo cualquiera, encuentre y muestre por pantalla la longitud del tercer lado.

    4. 

    Hacer un programa que dado un número encuentre, si es posible, su equivalente en potencias. Por ejemplo: Para el 8el equivalente seria 2**3.

    5. 

    Desarrolle un programa que dados 3 números enteros, busque el mínimo común múltiplo (M.C.M) entre ellos y lomuestre por pantalla

    6.  Realice un programa que reciba una frase o texto ingresados por el usuario y que cuente la cantidad de coincidenciaspara cada letra. Ej: Marta -> m=1; a=2; r=1; t=1.

    7.  Desarrolle un programa que calcule la siguiente sumatoria, con n y H ingresados por el usuario. La sumatoria se

    calculará siempre y cuando el resultado no exceda H (ingresado), de manera que si el índice K no pudo llegar hasta n ,elprograma mostrara hasta qué índice llegó (antes de exceder el valor de H) y calculará el rango de error (diferencia) entreel verdadero resultado de H y el que ha sido ingresado. **recuerde que el índice n ingresado por el usuario tiene que serpositivo y mayor que k de la misma manera que H, Haga las validaciones correspondientes.

    8.   Tenemos que un número Perfecto es cuando dicho número es resultado de la suma de sus divisores menos de elmismo. Implemente una función de búsqueda de los divisores y Dado un numero entero positivo n ingresado por elusuario (de 1 a 10) buscar la cantidad hasta n de números perfectos.

    9.  Hacer un programa que calcule la siguiente expresión, dados n (numero entero positivo), b no mayor que 7 y c no

    mayor que 3.

    10.  Escriba un programa que dándole el importe exacto de una cantidad te indica el mínimo número de monedas quepodrías tener. Las monedas son de 5,10,50,100,500.

  • 8/15/2019 Guia Semestral estructura de datos

    3/16

     

    3

    3   Arreglos:

    1.  De una lista de 50 números enteros ingresados en un arreglo por el usuario (debe realizar llenado del arreglo), y unnúmero n, buscar y mostrar por pantalla cuantos números en la lista de números del arreglo son múltiplos del número n.

    2. 

    Desarrolle un programa que cuente la cantidad de letras ingresadas en un arreglo, estas deben ser contadas de formaagrupadas según el orden de la palabra y sus coincidencias. Ejemplo: arcoiris=arrcoiis, entonces tendríamos sólo 6letras, tomando en cuenta que el arreglo debe ser ordenado antes de contar las letras.

    3. 

    De un arreglo A de caracteres (letras) de largo máximo 50, invertir sus valores en un arreglo B del mismo tamaño. Luego verificar si la palabra es palíndrome (es decir se lee igual hacia adelante y hacia atrás) comparando los dos arreglossimultáneamente. Haga las restricciones necesarias para la entrada de los datos sin que afecte lo antes expuesto.

    4.  Ordenar un arreglo de tamaño 10 de enteros ingresados por el usuario de menor a mayor, no se permite el uso dearreglos auxiliares.

    5.  Reciba 10 notas guardadas en un arreglo y calcule el promedio de un alumno tomando en cuenta que se debe

    preguntar el porcentaje que tiene cada nota (puede ser guardado en otro arreglo de igual tamaño). Trabaje con los dosarreglos simultáneamente.

    6.  Se tiene un vector compactado de 50 números enteros sume la 1º con la 2º casilla y guárdelo en la 3º, sumando esteresultado al valor que ocupaba ese lugar (1º+2º=3º ; 3º+4º=5º ; 5º+6º=7º…). Repita la operación en todo el arreglo. Ej:1-2-3…= 1-2-6…

    7.  En el Aeropuerto de Santiago se manejan 15 puestos de estacionamiento (identificados por las letras del abecedario dela A a la O), a su vez hay 15 aviones funcionando ese mismo día (que se identifican con su número de vuelo). El Aeropuerto guarda además la hora de llegada del vuelo, la hora de salida, la cantidad de pasajeros que ocupan el avión, y el destino al cual se dirige.

    Maneje 6 arreglos de diferentes tipos para guardar cada uno de estos datos y manejarlos se forma sincronizada. Sepide que al preguntar por el estacionamiento diga el numero de vuelo que lo ocupa, Al preguntar por el numero de vuelodiga la hora de salida, la hora de llegada, la cantidad de personas que ocupan el avión, el numero del estacionamiento yel destino del avión, Y que al preguntar por un destino específico muestre una lista con todos los aviones (nº de vuelo)que se dirigen ahí.

    8.  Se tiene un arreglo de largo 25 de números enteros que se maneja de manera compactada y ordenada. Se pide quehaga una función que permita eliminar un número específico y mantener el arreglo compactado y otra función quepermita (si hay espacio disponible) agregar un número de forma ordenada sin perder ningún valor del arreglo. Considereque en los lugares vacios se guardarán números que se consideren nulos.

    9.  Se tiene un vector de largo 50 lleno de números en el cual debe asumir que existen números repetidos ya sea de formaconsecutiva o alternada. Se pide hacer un programa para listar por pantalla todos los números distintos entre si, sinutilizar arreglos auxiliares.Ejemplo:

    Si el arreglo es: | 5 | 4 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 1 | 2 | 5 | 3

    Debe mostrar: | 5 | 4 | 3 | 6 | 7 | 8 | 9 | 1 | 2

  • 8/15/2019 Guia Semestral estructura de datos

    4/16

     

    4

    4   Anidación Arreglos:

    1.  En un arreglo de largo 30 de estructuras tipo “Info”, se encuentran almacenados diversos datos de los miembros de unclub de fans. Se pide que elabore un programa que permita:

    a.   Al ingresar las iniciales del nombre de uno de los integrantes mostrar todos sus datos.b.

     

     Agregar o Eliminar del Vector de Pagos una cantidad específicac.  Ordenar el vector en forma ascendente cada vez que el usuario ingrese un numero en el vector de pagos.

    Las estructuras a utilizar serán las siguientes:

    struct Info{

    char Nombre[50];char Rut[11];int edad;int Pagos[100];

    };

    2.  Se tiene un arreglo de largo 20 de arreglos (largo 10) que a su vez este último es de estructuras tipo Trabajador. En elprimer arreglo cada celda representa un día hábil del mes (es decir trabajado), y cada día posee un arreglo que simbolizaa las personas que trabajaron (normalmente en esa empresa son 10) durante ese día. Se pide que con las estructurasdefinidas posteriormente:

    a. 

     Agregue los datos de todas las personas en un día ingresado por el usuariob.  Dado un número, mostrar esa cantidad de trabajadores en un día especificado.c.

     

    Eliminar (o poner valores nulos en las variables) de una persona indicada por Rut

    Las estructuras a utilizar serán las siguientes:

    struct Trabajador

    { char Nombre[50];char Rut[11];char cargo[15];int edad;

    }

    3.  Un vector de largo 5 de enteros que representan los números sorteados de un juego de azar, está ubicado dentro deotro vector de largo 4 que representa las veces que se sortean los números al mes, a su vez este vector está ubicadoen uno de largo 12 que representan los meses del año. Se pide que dado 5 números busque la coincidencia en laestructura y muestre por pantalla el número del sorteo, el mes en que fue sorteado y el número de la semana en queocurrió.

  • 8/15/2019 Guia Semestral estructura de datos

    5/16

     

    5

    5  Matrices:

    1.   Teniendo una matriz de números enteros de dimensiones 10 x 10 (cuadrada) se pide desarrollar un algoritmo pararecorrer dicha matriz de forma espiral mostrando por pantalla el resultado de dicho recorrido.

    2. 

    Sumar una matriz cuadrada de tamaño 6 x 6 con su transpuesta, y determinar si la resultante es simétrica (Matriz[i][j] ==Matriz[j][i]).

    3. 

    Implementar una función para encontrar el número mayor y el menor de una matriz de enteros, debe considerar que el tamaño de la matriz, así como la matriz son recibidos por parámetro.

    4. 

    Ingresar una lista de 30 alumnos con ocho calificaciones cada uno. Mostrar aquellos alumnos con sus notas, cuyopromedio sea igual o superior al promedio general, para ello debe hacer uso de las matrices y/o arreglos que se estimeconveniente.

    5. 

    Desarrolle un juego de combate naval que opere sobre una matriz de 10 x 10 con barcos que ocupan sólo unacoordenada de la matriz, debiendo leerse las posiciones de los barcos desde un archivo de texto. Un adversario debe

    efectuar un máximo de 40 disparos (indicando las coordenadas del disparo), y si en ella existe un barco se deberáindicar que el barco está hundido. Tras cada disparo los barcos deben desplazarse una posición a la derecha. En casode ya estar en el extremo derecho pasa al extremo izquierdo dando la sensación de continuidad.

    6.  Una compañía de gaseosas ordena sus pedidos en una matriz, una de sus dimensiones corresponden al número degaseosas que trabajan (en este caso serian 15 tipos), la segunda dimensión corresponde a la cantidad de clientes queposee la empresa (155) en la matriz se guarda la cantidad de gaseosas de cada tipo que requiere un cliente es decir:

    Cada celda de la matriz guardará un entero correspondiente a la cantidad de gaseosas que cada cliente requiere. Deacuerdo al índice de esta matriz se sabrá el tipo de gaseosa y el número del cliente.

    cl iente\gaseosa coca naran ja imón

    001 20 - 24

    002 15 30 -

    Se pide lo siguiente:

    Mostrar por pantalla de manera ordenada (mostrar como tabla) los pedidos de los clientes tomando en cuenta que elnumero de los clientes se mostrará del 001 al 155 y que el tipo de gaseosas se identificará con letras A hasta O segúndel índice (es decir, índice 0 corresponde A).

    a.   Agregar pedidos a la matrizb.  Borrar pedidosc.

     

    Calcular los pedidos por clientes y Mostrarlo por pantalla

  • 8/15/2019 Guia Semestral estructura de datos

    6/16

     

    6

    6   Anidación Matrices-Arreglos:

    1.  Se tiene una matriz de 10x10 la que representa los asientos de una sala ordenados por fila/columna, en cada celda dela matriz existe una estructura que simboliza a la persona que corresponde cada asiento, la estructura posee los datos

    de dicha persona además de un vector que guarda las horas en que esa persona estará ocupando el asiento. Se pideque dado un número de asiento busque a la persona y muestre los datos por pantalla, además de crear una funciónque permita buscar un asiento disponible, si no existiese que muestre el que se desocupará más pronto.

    2. 

    En un cibercafé de la ciudad las personas que entran deben registrarse para poder tener un control de los daños quepudiesen ser causados en los equipos. Para esto se tiene una matriz tridimensional (tres dimensiones) que representa elnumero de computadores (25), las horas identificadas del 1 al 11 (son las horas que trabaja cada computadordiariamente), y las personas (con un tope de 100 por equipo). A su vez cada persona tiene un vector de las paginasque ha visitado (el vector será de enteros ya que cada página en la base de datos del cibercafé, está identificada conun numero). Calcule el valor de la visita de una persona según las horas que estuvo en el ciber, cree una función quebusque una persona según el nombre y otra que muestre todos los usuarios de un computador en específico.

    Estructuras de datos:

    struct Persona{

    char Nombre[50];char Horain[6];char Horaout[6];int edad;int paginas[20];

    };

    3.  Se tiene un vector de largo 12 representando a las regiones del país, cada celda posee un vector de largo 20 para lasciudades de la región y cada celda de éste a su vez posee un vector de largo 20 para las comunas de dicha ciudad.En cada celda que representa a las comunas existe una matriz de 4x4 que guarda todos los códigos postales de esacomuna. Muestre por pantalla ordenado por región-cuidad-comuna los códigos postales (utilice números para identificar

    cada una de ellas) y cree una función que dado una región-cuidad-comuna muestre los códigos de esa zona.

  • 8/15/2019 Guia Semestral estructura de datos

    7/16

     

    7

    7  Punteros (arreglos-matrices dinámicos):

    1.  Ingresar una frase en un vector de largo n (dinámico) y todas aquellas letras que se encuentren repetidas eliminarlas ydejar sólo la primera coincidencia. Requiere compactar.

    2. 

    Recibir 2 palabras en arreglos dinámicos y concatenarlas en un tercer arreglo.

    3.  Crear un vector de estructuras de largo 50 que contiene los datos de la guía telefónica de la Isla Juan Fernández. Laestructura contiene: nombre (Char*), dirección (Char*), teléfono (int) y rut (int). Muestre las personas ordenadas pornombre y todos sus datos.

    4. 

    Crear un vector de punteros estructuras de largo 50 que contiene nombre (char*), edad (int) y nº de cuenta bancaria(char*). El vector se maneja de manera compactada (es decir sin nulls en medio). Mostrar todas las personas cuyonombre empieza con una cadena ingresada por el usuario.

    5. 

    En un jardín de niños se lleva el registro de todos los niños y las mensualidades pagadas durante el año en una matrizdinámica (de dimensiones indicadas por el usuario). Cada niño tiene asociado un nombre (char*), apoderado (Char*),

    deuda_anual (Int) y deuda_pagada (int), todo esto en un vector de estructuras. Se pide desarrollar un programa quemediante un menú permita realizar las siguientes operaciones:

    a.  Listar a todos los apoderados y sus hijos cuya deuda anual sea mayor que la pagadab.  Calcular las deudas de todos los alumnos y obtener lo que se le debe al jardínc.

     

    Mostrar a todos los niños que están al diad.  Eliminar o modificar los datos de un niño.

    6. 

    Desarrollar un programa que permita girar una matriz nxm en 90° en sentido contrario a las agujas del reloj, el programadebe permitir varios giros consecutivos. La matriz debe ser dinámica, y el proceso de giros debe realizarse en funciones,además determinar si la matriz es identidad.

    Matriz Original Matriz Girada en 90° Matriz Girada en 90° más

    7.  Se define que una matriz cuadrada es "superiormente achurada en orden" si para la diagonal principal y para cada unade las paralelas superiores a ella, se cumple que sus elementos se encuentran ordenados ascendentemente,considerándolos de izquierda a derecha y de arriba hacia abajo (cada diagonal por separado). Por ejemplo:

    En este ejemplo cada diagonal tiene sus

    elementos ordenados ascendentemente de arriba

    abajo y de izquierda a derecha, por tanto es

    "su eriormente achurada en orden". 

  • 8/15/2019 Guia Semestral estructura de datos

    8/16

     

    8

    Construya un algoritmo que, para una matriz cuadrada de N x N (con posiciones desde la 0 a la N-1 en filas ycolumnas),llena con números enteros ya ingresados, determine si cumple la propiedad de ser "superiormente achuradaen orden".

    8.  Se tiene que en un colegio de la Zona se organizan los profesores de la siguiente manera: En un vector dinámico deestructuras, en cada celda del vector se guarda la información de un profesor, cada profesor posee nombre (char*), rut(char*), especialidad (char*) y una matriz de semanas vs días (4x7). En cada celda de dicha matriz existe una estructuraque contiene horario (char*) y un vector dinámico de los cursos (char*) que tiene que dictar ese día. Se pide que a través de un menú el programa haga lo siguiente:

    a.   Agregar, modificar y eliminar los datos de un profesorb.   Agregar, modificar y eliminar los cursos que el profesor dicta.c.

     

    Listar a todos los profesores y sus cursos en un día específico.d.  Buscar a un profesor por su nombree.  Dado un el nombre de un curso listar a todos los profesores que dictan el curso ese día.

    9. 

    Realizar el proceso de multiplicacion de dos Matrices (dinamicas), tomando encuenta que el producto de dos matricesse puede definir sólo si el número de columnas de la matriz izquierda es el mismo que el número de filas de la matrizderecha. Si A es una matriz m!n y B es una matriz n!p, entonces su producto matricial AB es la matriz m!p (m filas, pcolumnas) dada por:

    Por ejemplo:

    10. 

    Un Edificio se maneja en una matriz tridimensional (tres dimensiones) de estructuras. La primera dimensión hacereferencia a los pisos del edificio (10), la segunda y tercera dimensión se consideran como las 16 habitaciones queposee cada piso (podemos imaginarnos una matriz de 4x4).

    La Estructura se define:

    struct habitacion{

    char* estado;char* titular;int n_de_ocupantes;int n_de_camas;

    };

    Se pide:

    a. 

    Mostrar las habitaciones ordenadas por piso y si se encuentran ocupadas o 

    disponiblesb.

     

    Buscar a un titular dentro del edificioc.  Buscar según las necesidades del usuario un número de camas específico y mostrar todas aquellas habitaciones

    que posean esa cantidad. Mostrar las que estén disponibles con un 0 y aquellas q no con un 1 (en una funciónaparte).

  • 8/15/2019 Guia Semestral estructura de datos

    9/16

     

    9

    Listas:

    11. 

    Una lista doblemente enlazada tiene un puntero al siguiente nodo de la lista y otro al anterior, permitiendo recorrer la listaen ambas direcciones. Defina y construya el ADT Lista Doblemente Enlazada (puede usar un nodo “fantasma”).

    12.  Una casa comercial maneja su lista de novios de una manera singular: cada persona ocupa un nodo dentro de una listasimplemente enlazada, manteniéndose siempre junta la pareja, primero el novio y a continuación la novia. Si las parejasse reconocen en la lista ordenadas de acuerdo con el apellido del novio, entonces:

    a. 

    Defina las estructuras a utilizarb.  Crear una función que elimine a una pareja de la lista dado el apellido del novio.c.  Desarrolle una función que cree e inserte ordenadamente una pareja a la lista.d.

     

    Crear una función que al escribir una “H” muestre a todos los novios y una “M” a todas las novias. De ésta sedespliega otra opción: al escribir cualquier letra del abecedario mostrará los apellidos que comiencen con dichaletra.

    13. 

    Una empresa distribuidora utiliza una lista circular para definir la ruta que sigue su camión repartidor dentro de la ciudad.En esta lista cada nodo representa un cruce de calles, con la excepción del nodo apuntado por la cabeza de la lista,que representa a la empresa misma.

    Se pide :

    a. 

    Definir los tipos de datos que soporten esta estructurab.  Programar un procedimiento que permita inicializar la lista (crear el registro que representa a la empresa).

    c. 

    Programar un procedimiento que permita mostrar la ruta.

    14. 

    Un mayorista guarda todas las ventas de los minoristas en una lista simplemente enlazada, donde cada nodo contieneel RUT del minorista y el monto de la venta (un minorista puede figurar más de una vez en la lista). A partir de esto sedesea construir otra lista ordenada por RUT, en que cada minorista figure una sola vez con el total de las ventas. Sepide:

    a.  Definir los tipos de datos que soporten estas estructuras.b.

     

    Construir un procedimiento que permita generar la segunda lista a partir de la primera.

    Ruta

  • 8/15/2019 Guia Semestral estructura de datos

    10/16

     

    10

    9   Anidación Listas-Arreglos:

    15.  Una empresa que vende sus productos en el mercado nacional, mantiene su lista de distribuidores de la siguienteforma: un arreglo de largo 13 representa las regiones del país (Santiago es la región 13), donde de cada posición del

    arreglo “cuelga” una lista de los distribuidores autorizados de la región (cada distribuidor se identifica por un RUT). Sepide:

    a.  Definir los tipos de datos de esta estructurab.

     

    Construir un procedimiento que muestre todos los distribuidores del país, agrupados por región.c.

     

    Eliminar un distribuidor de una región, a partir de su RUT.

    16. 

    Para la utilización de la Tarjeta “PrestaFacil” se maneja un lista simplemente enlazada de clientes con los siguientes datos:Nº de tarjeta, clave secreta, nombre del titular, un puntero a un adicional, Rut del titular, y una lista simplemente enlazadade compras. Cada estructura de la lista de compras posee: nombre del producto, código, precio normal, nº decuotas, precio final, valor de cada cuota.

     Tomando en cuenta que los trabajadores manejan el sistema, Desarrolle un programa que:

    a. 

    Defina las estructuras a utilizarb.

     

    Cancele una cuota de las compras (requiere restar el precio total y nº de cuotas)c.  Una función que borre automáticamente la compra de un cliente cuyo precio total sea cero.d.  Eliminar a un cliente y a su adicional de la listae.

     

     Agregar a un cliente a la lista ordenado por su Rut

    17.  Una Empresa de ventas de juegos de Nintendo Wii a nivel nacional, necesita un sistema básico para manejar sussucursales, considerando que cuenta con numerosas sucursales en muchas regiones del país, y que cada una de ellaspuede tener un listado n de títulos (juegos que se encuentran disponibles en las tiendas). Sabiendo que se tiene: unalista doblemente enlazada de ciudades, una lista contigua de punteros a sucursales, y una lista simple de títulos se pideimplementar las siguientes funciones, y llamarlas a través de un menú en el main():

    a. 

    Una función que crea la titulo y retorna un puntero a ella.b.  Una función que agrega un titulo a las sucursales de la ciudad indicada por el puntero (recibido).c.   Vender un juego de algún título disponible, dada la sucursal y el titulo del juego.d.  Una función que determine cuál es el título más vendido a nivel nacional.

    El prototipo de estructuras utilizadas son:

    struct titulo{char *nombre;char *tipo;int ventas;struct titulo*sig;

    };

    struct sucursal{

    char *dirección;int codigo;struct titulo *titulos;struct sucursal *sig;

    };

    struct ciudad{

    char *nombre;struct sucursal*sucur;struct ciudad *ant;struct ciudad *sig;

    };

    18. 

    En una Reserva Natural se está comenzando a autorizar el camping. Se decidió registrar cada familia que entra alcamping y el lugar de la reserva que ocuparán para acampar. En una lista contigua se guarda el apellido del titular de lafamilia y los datos de la familia en general (int integrantes, int automóvil (0= si – 1= no), char* apellido_titular, char*lugar_camping, int fecha_in (ddmm), int fecha_out (ddmm)), de cada titular cuelga también una lista circular de losacompañantes (familiares) donde se detallan los datos de cada integrante incluido el titular (nombre, parentesco con titular, edad, Rut). De acuerdo a esto se pide:

  • 8/15/2019 Guia Semestral estructura de datos

    11/16

     

    11

    a.  Declare las estructuras a utilizarb.

     

    Desarrolle una función que agregue y elimine (funciones separadas) una familia del campingc.  Desarrolle una función que agregue y elimine (funciones separadas) a todos o alguno de los integrantes de una

    familia. Para buscar la familia se usa el apellido del titular y para borrar alguno de los integrantes se buscan por el rutd.

     

    Buscar una familia dentro de la Reserva e indicar en qué lugar están acampando

    e. 

    Desarrolle una función que de acuerdo a la fecha de llegada y la de salida calcule el precio total a pagar. Se debeconsiderar que se paga una entrada (adulto desde los 18 años= $1500 y niños de cero a 17 años $500) yestadía en el lugar (por cada noche cada integrante paga $300, si son más de 5 integrantes en la familia se haceun descuento del 30%.

    f.  Muestre a Todas las familias ordenadas por titulares (orden alfabético) que ocupan el camping y el sector donde seencuentran.

    19. 

    La empresa “Lomito” maneja sus tiendas en un vector de punteros largo 4, donde cada celda representa a una de sus tiendas (Heladerias Lomito, Desayunos Lomito, Lomito Comida Rápida, Lomito Express), a su vez de cada tienda cuelgauna lista doble de sucursales. Se pide:

    a.  Definir el prototipo de estructurasb.  Eliminar una sucursal de una tienda especifica (se elimina de acuerdo al código de sucursal)

    c. 

    Calcula las ganancias totales de la tienda, tomando en cuenta que en la estructura de cada sucursal se guardan lasganancias de ésta (quiere decir que se pide sumar las ganancias de todas las sucursales)

    d.  Calcular las ganancias de Limito (todas las ganancias de las tiendas).e.

     

    Eliminar una tienda del vector. Recuerde que se debe compactar.

    20. 

    Dada la siguiente estructura matricial de punteros:

    1 2 3

    4 5 6

    7 8 9

    Matriz

     

    a.  Establezca los tipos de datos necesarios para generar esta estructura.b.

     

    Diseñe un procedimiento para mostrar por pantalla una matriz cuadrada similar a la de la figura (recorriéndola de

    izquierda a derecha y de arriba a abajo).c.  Diseñe un procedimiento para mostrar por pantalla la diagonal de una matriz similar a la de la figura, de dimensionesdesconocidas.

    d. 

    Desarrollar una función que permita obtener el valor almacenado en la posición [i, j] de la matriz (suponga que lamatriz conserva siempre todos sus nodos), tomando en cuenta de que no pueden existir variables globales.

    21. 

    En el Registro Civil para organización, se necesita registrar a cada persona que solicita un documento (certificados de todo tipo, etc.). Para ello se necesita que cree las s iguientes funciones:

  • 8/15/2019 Guia Semestral estructura de datos

    12/16

     

    12

    a.  struct Persona* crear()= crea el registro de una persona y sus datos y devuelve un puntero a ella.b.

     

    struct Documento* solicitud()= crea una solicitud de un documento y retorna un puntero al mismoc.

     

     void busqueda_solicitud (struct Persona** head, char* documento)= Busca en cada persona el tipo de documentoque solicitó, si coincide con el documento buscado, muestra los datos de la persona por pantalla.

    d. 

     void unir_persona()=une a la lista de personas ordenandas por Rut una nueva persona creada.

    Utilice el siguiente prototipo de estructuras:

    10 

    Recursividad:1.  Desarrollar un programa que a través del uso de funciones recursivas calcule si un numero es Perfecto (ejercicio nº

    10).

    2.  Desarrolle una función recursiva que halle el valor de la siguiente sumatoria, dado un valor aproximado de V. Lasumatoria se detendrá cuando el valor total de ésta sea menor o igual a V. Considere V y n ingresados por usuario.

     V=! n*nn+1

    3. 

    La problemática de las Torres de Hanoi, consiste en que hay tres postes: A, B y C. En el poste A se ponen ndiscos de diámetro diferente de tal manera que un disco de diámetro mayor siempre queda bajo de uno dediámetro menor. El objetivo es mover los discos al poste C usando B como auxiliar. Sólo puede moverse el discosuperior de cualquier poste a otro poste, y un disco mayor jamás puede quedar sobre uno menor, un ejemplo para tres discos es la que se muestra en la figura:

    struct Persona{char* Nombre;char* Rut;char* Direccion;int edad;struct Documento *Doc;struct Persona *ant, *sig;

    };

    struct Documento{char* Nombre_documento;char* Nombre_solicitado;

    char* estado_doc;int cantidad_doc;int valor_unitario_doc;int valor_transaccion;struct Documento *sig;

    };

    100

    K=1

  • 8/15/2019 Guia Semestral estructura de datos

    13/16

     

    13

    4.  Desarrollar un programa que a través de recursividad invierta una palabra. Ejemplo: live=evil

    5.  Escribir una función recursiva que encuentre la altura de un árbol binario.

    11 

     Árboles:

    6.  En una Empresa los nombres y edades de todos los trabajadores se necesitan guardar para llevar un registro deellos. Luego deben mostrarse todos los trabajadores ordenados alfabéticamente. Implemente un árbol binario.

    7.  Implemente un árbol lleno de valores enteros, en el que se pueda calcular el promedio de todos los valoresmenores o iguales a un número ingresado por el usuario. El recorrido debe ser en pre-orden y de forma recursiva.

    a.  Inserte el numero 106 :

    b.  Inserte el numero 60:

    8.  Qué Rotación debe realizarse. Realice la rotación detalladamente.

    9.  Realice lo siguiente en un árbol AVL de orden 6:

    a.  Insertar: 8-12-6-35-15-20-46-9-18-36-30-10-1b.  Eliminar: 35-20-46-1

    60

    10 69

    6 15 27 9265 70

  • 8/15/2019 Guia Semestral estructura de datos

    14/16

     

    14

    10. Inserte en un ABB los siguientes datos de manera sucesiva: 2,1,4,3,6,5,8,7,9 y luego responda lo siguiente:

    a.  ¿cuál es la altura del árbol?b.

     

    Utilizando rotaciones simples y dobles, construya un árbol AVL posible.c.  ¿cuál es la altura del árbol AVL?d.  ¿cuántos nodos no tienen hijos?

    11. Implementar las funciones de recorrido que a continuación se describen, de forma recursiva, para un AB denúmeros (int numero), buscando un valor determinado, y cuando este sea encontrado retorne un puntero a él, de locontrario retorna NULL.

    a.  Recorrido in-ordenb.  En un ABB, con post-orden.

    12. En un árbol AB se guardan los nombres de los integrantes de una familia, es decir, el AB representa a un árbolgenealógico. Se pide que a través del árbol, cree su representación mediante tres vectores.

    13. 

    Del mismo árbol anterior, haga la representación del AB mediante un vector de valores, recuerde que el hijo

    derecho va en la posición 2*i y el izquierdo 2*i+1.

    14. 

    En una farmacia se guardan los medicamentos en un árbol que posee la siguiente estructura:

    struct Medicamentos{

    char* Nombre_Real;char* nombre_publicitario;char* laboratorio;Char* Datos;Int clave;Int precio;Struct Medicamentos *izq, *der;

    };

    Se pide que de acuerdo a la estructura dada, cree una función que transforme el árbol a un vector de estructuras.

    15. 

    Se tiene un árbol binario de búsqueda de punteros, ordenado por un código de persona, usando las estructurasinferiormente expuestas, determinar s i un árbo l b inar io de búsqueda es o no degenerado, tomando encuenta que debe implementar de forma obligatoria las funciones que se describen a posteriormente

    a.  struct persona *crear_persona(): crea un nodo a una persona y retorna un puntero a ella.

    b.  int insertar_nodo (struct abb **raiz, struct persona *nodo_nuevo): función recursiva querecibe el árbol, y el nodo que se desea insertar (persona), retorna 1 en caso de éxito, 0 en caso de que yaexiste el elemento.

    c.  int abb_degenerado (struct abb *raiz, int lado): determina si un abb es degenerado por la

    izquierda o por la derecha dependiendo de la opcion (1: izquierda, 2: derecha), recibe la raíz del ABB y la

    opción del lado a verificar, esta función es iterativa.

  • 8/15/2019 Guia Semestral estructura de datos

    15/16

     

    15

    El prototipo de estructuras utilizadas son:

    Ejemplo de árbol degenerado por la derecha:

    16. 

    La Asociación Gremial De Transportes desea construir un árbol para organizar sus recorridos según las ciudades,sabiendo que el identificador de cada ciudad es su código (código de ciudad). Cada ciudad posee otro árbol delas líneas que la recorren cuyo identificador es su número y a su vez cada línea tiene un vector dinámico deestructuras donde se guarda el valor de los pasajes (ejemplo: plan-cerro=$370)

     Asociando tenemos un árbol de Asociación Gremial de Transportes (ciudades) y de él cuelga otro árbol con laslíneas de cada ciudad, de cada línea un vector dinámico de estructuras con el detalle de los precios. Se pide que:

    a. 

    Declare las estructuras a utilizarb.  Llenar los datos con funciones modularmente independientesc.  Mostrar los datos de cada árbol según necesidad del usuariod.  Borrar un nodo del árbol principal (ciudad)e.

     

    Borrar un líneaf.  Cambiar el valor de un pasaje en una línea y ciudad específicag.

     

     Agregar una nueva línea a una determinada ciudadh.

     

     Agregar una nueva ciudad de consideración al árboli. 

    Eliminar toda la asociación j.  Ordenar las línea según numerok.  Búsqueda de líneas y ciudad

    17. 

    Dado el grafo orientado que se muestra en la inferior, se pide:

    a.  Calcular, mediante el algoritmo de Floyd, el camino mínimo desde cualquier vértice (fuente) al vértice (destino) 0de dicho grafo, es decir el camino mínimo desde los vértices 1, 2, 3 y 4 al vértice 0. Mostrar para ello, lasecuencia de matrices de costes y la secuencia matrices de vértices intermedios.

    b.  Calcular además, cuál es el vértice del grafo que más veces se considera como vértice intermedio o de paso al

    aplicar el algoritmo de Floyd. Justificar convenientemente la solución.

  • 8/15/2019 Guia Semestral estructura de datos

    16/16

     

    16

    12 Búsqueda y Ordenamiento:

    18. 

    Dado el siguiente enunciado, desarrolle la función de búsqueda secuencial. void busqueda_secuencial(int v[20],int valor).

    19. 

    Implemente una Hashtable con función de hash (mod) y mediante un arreglo de listas simplemente enlazadas paramanejar las colisiones. A la Hashtable se le ingresan valores en el rango 1 a 100 y el arreglo es de largo 15.Implementar las estructuras y las operaciones para agregar y eliminar valores de la Hashtable.

    20. 

    Desarrolle el algoritmo de la búsqueda binaria dado un número ingresado y un arreglo de largo 50.

    21. 

    Desarrolle un algoritmo que permita la inserción de un número en un arreglo con el método de la baraja. El arreglo

    debe estar ordenado de menor a mayor,

    22. Desarrolle en C la función del método Quicksort.