PRÁCTICA #6 TIPOS DE DATOS ESTRUCTURADOS: Arreglos, Registros y Archivos Sección de revisión de teoría 1. Comente sobre: 1.1. Tipos de Datos Estructurados y sus principales ventajas frente a los Tipos de Dato Simples. 1.2. Semejanzas y diferencias entre Arreglos, Registros y Archivos. 1.3. Comportamiento de los principales algoritmos Búsqueda y de Ordenamiento. Sección de ejercicios a resolver 2. Dado un arreglo con N elementos de tipo real suministrados por el usuario, se requiere: 2.1. Leer y escribir los valores del arreglo. 2.2. Calcular la suma de los valores del arreglo. 2.3. Calcular la media de los valores del arreglo. 2.4. Calcular la cantidad de números impares y números pares. 2.5. Transformar el arreglo colocando en las posiciones pares un valor dado por el usuario. 3. Dado un arreglo de números enteros de N posiciones, se desea que usted elabore un algoritmo que determine el valor máximo y el mínimo del arreglo, además debe decir el número de ocurrencias de los mismos dentro de la estructura. 4. Dado un arreglo de caracteres y una letra, determinar si un elemento dado pertenece al arreglo e indicar el número de veces que aparezca. 5. Dado un arreglo de enteros S, escriba un algoritmo que guarde en un arreglo T la secuencia de sumas parciales de S. (S[1], S[1]+S[2], S[1]+S[2]+S[3],...) 6. Elabore un algoritmo que realice el recorrido de una matriz según los esquemas: a) matriz de NxM b) matriz de NxM c) matriz de NxM d) matriz de NxN 1
7. Dado un arreglo A de enteros de N posiciones, realice los siguientes ordenamientos: 7.1. Orden ascendente utilizando el método de Selección Directa. 7.2. Orden ascendente utilizando el método de Intercambio (burbuja). 7.3. Orden descendente utilizando el método de Selección Directa. 7.4. Orden descendente utilizando el método de Intercambio (burbuja). 8. Dado un arreglo de 1000 números enteros (todos entre -100 y 100), haga una acción que imprima cuál es el número que más se repite entre ellos. En caso de que exista más de un número con estas condiciones, imprímalos todos. Por ejemplo, si el arreglo contiene los elementos: -2, 4, 1, -2, 3, 1, la salida debería ser: -2 1. 9. Dada una secuencia de caracteres suministrada en un archivo de texto llamado Letras.txt, proponga un algoritmo que calcule la frecuencia de todas las letras presentes en la secuencia y cuantas veces aparece cada letra. Suponga: La secuencia suministrada solo contiene letras y espacios ( ) o es suministrada vacía. Ud. cuenta con una función abstracta llamada Leer_Archivo(variableArchivo):Caracter, ya implementada y que usará para obtener el próximo carácter en la secuencia del archivo. La frecuencia de cada letra se calcula dividiendo la cantidad de veces que se ha contado esa letra, entre la cantidad total de letras de la secuencia. 10. Dada un archivo llamado GENTE.bin que contiene: nombre, cédula, sexo y edad de un grupo de personas, se desea generar otro archivo llamado Menores.bin que contenga sólo la información de las mujeres menores en edad que la primera persona del archivo. La estructura de datos que almacena la información de cada persona es la siguiente Tipo Registro Persona = String Nombre; Entero CI; Entero Edad; Carácter sexo; // sexo M ó F Fregistro; 11. Complemente el ejercicio anterior para indicar: 11.1. Promedio general de edad. 11.2. Cantidad de personas mayores a 65 años. 11.3. Distribución porcentual por sexo (porcentaje de hombres y de mujeres). 12. En un archivo se suministra información sobre ventas de gasolina en estaciones de servicio. Para cada estación se indica código, zona donde está ubicada (Este, Oeste, Sur, Centro, Metropolita), la cantidad de litros de gasolina vendidos de 91 y de 95 octanos para los meses de enero y febrero, y el precio de venta de la gasolina para 91 y 95 octanos. El archivo puede ser suministrado sin datos, en cuyo solicite los datos al usuario. Se desea que: 12.1. Defina variables y estructuras de datos convenientes para almacenar la información. 12.2. Elabore un algoritmo en donde se calcule e informe: La cantidad total y el monto total de litros vendidos para cada octanaje. La estación en donde se vendió la máxima cantidad de litros para el mes de febrero. El monto promedio de las ventas de gasolina en cada mes para la Zona Centro. 2
Sección de ejercicios propuestos 13. Dado un arreglo cuyos elementos son enteros, y un entero K, obtenga el arreglo resultante de realizar K desplazamientos circulares sobre el arreglo de entrada. Los desplazamientos serán a la derecha si K es mayor que 0 y a la izquierda en caso contrario. 14. Dados dos arreglos A y B de enteros, los cuales debe ordenar en forma ascendente, se desea que genere otro arreglo C con el mismo orden a partir de la mezcla de los dos arreglos anteriores, adicionalmente se pide que el arreglo C no contenga elementos repetidos. 15. Escriba un algoritmo que lea una secuencia de enteros la almacene en un arreglo de tamaño N y guarde en otro arreglo de igual tamaño una nueva secuencia aplicando las siguientes reglas al primer arreglo. 15.1. Si el elemento i es menor que cero, se guardará su valor absoluto 15.2. Si el elemento i es mayor que cero, se guardará su cuadrado 15.3. Si es un cero, se guardará tal cual. 16. Dada una secuencia de enteros guardada en un arreglo S, escriba un algoritmo que indique si alguno de sus elementos coincide con la suma de los elementos de la secuencia que le siguen. El problema debe resolverse sin acceder más de dos veces a cada elemento de la secuencia. Ejemplo: dado S = [-1, 2, 4, -2, 8, 3, -2, -3], el tercer elemento cumpliría la propiedad 17. Elabore un algoritmo que realice el recorrido de una matriz según los esquemas: a) matriz de NxN b) matriz de NxN c) matriz de NxN d) matriz de NxM 18. Un escritor escribe un texto y lo guarda en un archivo llamado relato.txt. Por razones esotéricas, nos interesa saber la cantidad de palabras en dicho texto, específicamente en cuanto a su longitud (número de letras). Para ello, se desea que ud. haga un algoritmo que lea dicho archivo y genere un reporte con la cantidad de palabras existentes por longitud, es decir, debe indicar cuántas palabras hay de una sola letra, cuántas palabras hay de dos letras, cuántas de tres y así sucesivamente hasta llegar a diez letras. En el caso de haber palabras de más de diez letras, éstas deben ser contabilizadas junto con las de 10 letras. Nota: el archivo de entrada debe ser leído caracter por caracter, y no hay otros caracteres sino las alfabéticas y los espacios en blanco. 3
19. La compañía T-shirt tiene 2 almacenes en Caracas: el almacén TRINITI, y el almacén GUACAMAYA. Esta compañía está dedicada a la venta de franelas. En cada almacén se conocen las tallas de franelas que tienen dentro del almacén. Suponiendo que no hay más de 50 tallas distintas, el dueño de la compañía requiere saber qué tallas no están en los dos almacenes a la vez (tallas críticas). Para ello, usted ha sido elegido para elaborar un algoritmo que, dado dos arreglos de tallas, correspondientes a cada almacén, imprima las tallas críticas ordenadas descendentemente. 20. Se desea desarrollar un sistema que permita realizar la gestión de un almacén y los productos guardados en él. La información es almacenada en un archivo llamado Productos y los datos relevantes de cada producto se reflejan en el siguiente registro: Tipo Registro Producto = Entero Código; Fregistro; String Nombre; Entero stockactual; // el stock es la cantidad de ese producto que hay en el almacén Entero stockmínimo; // cantidad mínima que debe haber de ese producto Entero stockmáximo; // cantidad máxima del producto que se puede almacenar Entero IDProveedor; // número del proveedor para el producto El sistema también almacena el Código, Nombre, Correo Electrónico y Teléfono de los trece (13) Proveedores con que trabaja la empresa. Se desea que usted proponga una solución algorítmica con acciones o funciones que: 20.1. Especifique las estructuras de datos más convenientes y la utilice en la solución propuesta. 20.2. Lea e inicialice los datos a almacenar en el archivo de productos. Los datos será suministrados por el usuario. La cantidad de productos a almacenar no es conocida previamente, ni es suministrada en el archivo, siendo el usuario el encargado de indicar cuando termina la entrada de información. 20.3. Genere un archivo Pedidos en donde se almacene la información de los productos cuyo stockactual es menor al stockmínimo. En el archivo Pedidos se desea mantener la mínima información que identifique al producto, la cantidad a pedir y el proveedor que lo suministra. La cantidad a pedir debe permitir que el nuevo stock del producto sea igual a su stock máximo. 20.4. Imprima información que permita contactar a los Proveedores de los productos que fueron incluidos en el archivo Pedidos. 21. En una tienda de electrodomésticos se venden productos a un precio que depende de la cantidad y el valor de sus piezas. Dado un archivo que contiene como máximo 100 Productos, se desea: 21.1. Obtener un archivo de salida, con los productos ordenados descendentemente por código. Escribir la información almacenada en este archivo. 21.2. Indicar cuál (o cuáles) son las piezas más caras que la tienda tiene en sus productos 21.3. Indicar en cual (o cuáles) de las piezas que la tienda compra invierte más dinero Considere: - Cada producto tiene entre 1 y 30 piezas, pudiendo ser todas las piezas iguales. - El rango de códigos de todas las piezas va de 100 a 1100. - Puede utilizar estructuras de datos auxiliares. - Usted propone las estructuras y tipos de datos que considere más conveniente. - Asuma que el archivo de Productos ya tiene datos. 4
Sección de ejercicios complementarios ARREGLOS: 22. Calcular el promedio de los valores de un arreglo de N números reales. Buscar además el mayor y el menor valor e indicar en qué posición (o posiciones) se encuentran esos valores. 23. Dados los arreglos A y B de enteros y del mismo tamaño, realizar lo siguiente: 23.1. Si la suma de los elementos de A es un valor par, entonces los valores en las posiciones pares de A se deberán poner en las posiciones pares de B y viceversa. 23.2. Si la suma de los elementos de A es un valor impar, entonces los valores en las posiciones impares de A se deberán poner en las posiciones impares de B y viceversa. MATRICES: 24. Leer un arreglo C de enteros de tamaño N y leer una matriz Mat de enteros de tamaño Nx4. Para cada uno de los valores de C, contar la cantidad de veces que aparece en Mat y mostrarlo al usuario. No debe permitir que el usuario introduzca valores repetidos al llenar el arreglo C. 25. Dada una matriz de valores reales, ordenarla descendentemente utilizando Selección Directa. 26. Elabore un algoritmo que realice el siguiente recorrido para una matriz de NxN: ARREGLOS, REGISTROS O ARCHIVOS: 27. Dada la siguiente información referente a vehículos que una empresa oferta para la venta: - Marca - Motor (capacidad en litros) - Precio 27.1. Proponga una estructura de datos que permita almacenar la información de todos los carros en venta, considerando que el número de carros será suministrado por el usuario. 27.2. Proponga una función o acción (lo que Ud. prefiera) que permita consultar y guardar la posición o índice de los vehículos cuyo precio es menor o igual a un precio P suministrado por el usuario. UTILICE UNA ESTRUCTURA EFICIENTE para guardar la información de estos vehículos. 28. Dados dos archivos A y B, ordenados ascendentemente, genere un tercer archivo que contenga los elementos de A y B ordenados ascendentemente, pero sin elementos repetidos. Nota: no debe utilizar ningún algoritmo de ordenamiento, y los archivos A y B deben ser recorridos una sola vez. Nota: Debe realizar los ejercicios aplicando las acciones y funciones que considere necesarias. GDAyP, Mayo 2011 5