sábado, 23 de junio de 2012

Problemas Propuestos de Estructuras


1)             Crear un arreglo de estructura con los datos de los estudiantes de la Escuela de Ingeniería Industrial de una Universidad (apellidos y nombres, código y sexo), luego reportar lo siguiente:

-   Total de los estudiantes de sexo masculino
-   Total de los estudiantes de sexo femenino
-   Listado de los estudiantes de sexo masculino
-   Listado de los estudiantes de sexo femenino
-   Listado completo de estudiantes ordenado alfabéticamente

2)          Usando un arreglo de estructuras ingresar los nombres y las notas de un grupo de alumnos hasta que se responda negativamente (N) a la interrogante: “¿Desea continuar ingresando datos (S/N)?” o hasta que el número de alumnos ingresados sea mayor que el tamaño máximo del arreglo. Luego determinar el número de alumnos aprobados y desaprobados, así como el total de alumnos. Hacer el reporte de los datos ingresados y calculados.
3)          Elaborar un programa en la cual se utilice una estructura que contenga una secuencia de nombres y fecha de cumpleaños tecleadas en formato NOMBRE-dd/mm/aa, donde dd es el día, mm es el mes y aa es el año. Imprimir esta lista por edad cronológica. Comprobar los cumpleaños erróneos, por ejemplo 30 de Febrero no debe ser aceptado.
4)      Guardar en un arreglo de estructura los siguientes datos de los alumnos: código, nombre, practica1, practica2, examen parcial1, examen parcial2 y proyecto final. Calcular y reportar el promedio de las prácticas, el promedio de los exámenes parciales y el promedio promocional de cada uno de los alumnos. Tener en cuenta que para el promedio promocional el promedio de las prácticas tienen peso 2, el promedio de los exámenes parciales peso 3 y el proyecto final peso 1.
5)          Se desea crear un arreglo de estructuras con el record de notas de los estudiantes de una determinada universidad. Los campos de la estructura son: número de matricula, nombre, sexo, edad, cursos y promedio ponderado. El campo cursos a su vez es otra estructura que esta formada por los campos: nombre del curso, número de créditos y nota. El campo promedio ponderado se obtiene sumando los productos de las notas por el número de créditos de cada curso, luego este resultado se divide entre la suma de los números de créditos. Escribir un programa que lea y reporte este arreglo, así como las opciones:

-   Orden de Méritos (ordenamiento por promedio ponderado de cada alumno en forma descendente)
-   Listado de los alumnos matriculados por curso y reportar el promedio por curso.

6)          En una empresa industrial se han producido 30 renuncias de personal durante los últimos 15 meses. En cada renuncia se obtuvo el código, el nombre y las fechas de ingreso y de salida. Se desea determinar en años, meses y días el tiempo de servicio de un empleado que renunció.
7)         Una clínica de maternidad registra cada nacimiento de bebes, guardando la siguiente información en un arreglo de estructuras: nombre, sexo, fecha de nacimiento y datos del padre y de la madre. Los datos del padre y de la madre están conformados cada uno por los campos: nombre y fecha de nacimiento y la fecha de nacimiento esta formada por los campos: día, mes y año. Realizar las siguientes operaciones opcionales:

a)        Ingresar la fecha actual y determinar la edad actual de cada bebe registrado, así como la de sus padres, en años, meses y días
b)             Determinar el número de niños varones y mujeres

8)            Una clínica privada almacena la siguiente información de sus pacientes: nombre, DNI, dirección, teléfono, fecha de la última visita, si pertenece a EsSalud (seguridad social) o no, si tiene alergias y un diagnóstico del paciente. Se desea un programa con las siguientes opciones:

a)             Introducción de la información
b)             Dado el número del DNI de un paciente, presentar toda la información de dicho paciente
c)             Listar todos los pacientes con alergias
d)             Listar alfabéticamente todos los pacientes que no pertenecen a EsSalud
e)             Imprimir el listado completo de pacientes.

9)          Una tienda de alquiler de videos hace rellenar y firmar un impreso al cliente cuando alquila una película. El impreso contiene:

-   Nombre del cliente
-   Dirección del cliente
-   Número de teléfono del cliente
-   Número del DNI o número de miembro del video club
-   Tarifa de alquiler
-   Cantidad en depósito (si hay – los miembros del club no precisan depósito).
-   Número de películas alquiladas
-   Número de días de alquiler
-   Nombres de las películas alquiladas
-   Fecha de alquiler
-   Fecha de devolución

Cuando se devuelven las películas, el impreso se cancela.
Usando estructuras determinar:

-   Los movimientos de caja
-   Donde se encuentran las películas
-   Cuántas veces se alquila cada película

10)     Una industria fonográfica registra información acerca de la grabación de cada disco de audio en un arreglo de estructuras, almacenando la siguiente información: titulo, autor, fecha de publicación y duración (en segundos). Crear las siguientes opciones:

a)             Número de canciones con una duración mayor de 150 segundos
b)             Número de canciones de cada autor
c)             Antigüedad de la publicación de cada canción

11)         Una empresa comercializadora tiene dividido sus productos en tres líneas de ventas (A, B y C), según las cuales se paga una comisión cuyos porcentajes son 15, 20 y 25% respectivamente. Usando estructuras ingrese los siguientes datos: fecha, vendedor, línea y monto. Calcular automáticamente la comisión y reportar todos los datos considerados.
12)      Ingresar el número de clientes potenciales de una empresa, la razón social, la dirección, el teléfono y el último volumen de ventas de cada una de ellas. Ingresar la razón social de una empresa cualquiera, buscar en el directorio creado y luego reportar todos los datos de dicha empresa. En caso de que la búsqueda no sea exitosa, reportar un mensaje que indique que dicha empresa no existe. Usar estructuras.
13)       Elaborar un programa que permita realizar el control de inventarios de una empresa. Para esto ingresar, en primer lugar, el número de  productos a controlar, y luego el nombre, la cantidad actual, el costo unitario y el precio unitario de cada producto. Enseguida calcular la inversión, los ingresos y la utilidad en cada uno de los productos, así mismo calcular la inversión total, los ingresos totales y la utilidad total. Posteriormente realizar la búsqueda de un producto, ingresando su nombre; luego elegir la operación a realizar, es decir una compra o una venta, y finalmente actualizar los datos de dicho producto.
14)    Para el inventario de una tienda de productos deportivos se requiere crear un arreglo de estructuras denominado Producto, que posea los campos: (A) nombre del producto, (B) número de código (4 dígitos), (C) número de piezas en el almacén, (D) número de piezas compradas, (E) número de piezas vendidas, (F) costo unitario y (G) precio unitario. Escribir un procedimiento que lea los datos del inventario en el arreglo de estructuras creado. El programa principal debe contemplar las siguientes opciones, que serán realizadas también con procedimientos:

a)             Impresión de todo el inventario
b)             Búsqueda de un artículo por número de código
c)          Actualización automática del campo (C) usando la información de los campos (D) y (E), después de la actualización a estos dos últimos campos se les reasignará el valor cero
d)             Ordenación decreciente por número de código.

15)        Calcular el sueldo mensual de un empleado que trabaja por horas, el pago de cada hora trabajada depende de su categoría:

Categoría         pago x hora (S/.)
     A                     26.90
     B                     24.30
     C                     21.50

Además, si el empleado trabaja más de 150 horas mensuales tiene una bonificación del 5 % de sueldo. Usar estructuras.

16)      Un hotel tiene 100 habitaciones de distintas comodidades, la información la manejan con los siguientes registros: número habitación, piso, tipo, precio por día, confort, estado. Se quiere realizar las siguientes operaciones:

a)             Buscar habitaciones disponibles y listar sus datos
b)             Imprimir el estado de las habitaciones, ordenadas por tipo
c)             Liquidar una habitación, ingresando la cantidad de días que estuvo ocupada
 
17)         En un comercio se mantiene información de los productos para su consulta. De cada producto se conoce la siguiente información: código, nombre, proveedor, precio. El administrador quiere opciones para:

a)             Listar en orden ascendente por precio.
b)             Listar en orden alfabético por proveedor.
c)             Listar en orden alfabético por nombre.
d)             Buscar un producto por nombre (si no está, se emite un mensaje).

En todos los casos visualizar todos los campos: número, nombre, proveedor, precio.

18)         Se tiene un arreglo cargado con datos de 5000 transacciones de una cartera de clientes de un Banco que usan la tarjeta de crédito TC, la información la manejan con los siguientes registros: Número de cuenta, Fecha de operación, Monto, Número de Comerciante. Se quiere:

a)           Ordenarlo por Número de cuenta; si hay más de una transacción para cierto número de cuenta, el orden se decide por la fecha; si esto no alcanza, considerar al comerciante
b)             Cantidad de clientes que realizaron estas transacciones
c)             Realizar un listado de clientes con los montos totales de sus transacciones

19)       Escribir un programa que lea un registro con los siguientes campos: nombre, edad, sexo, altura, color de piel, color de ojos, nacionalidad y región. El programa debe almacenar todos los registros leídos en un arreglo y después ordenarlos de acuerdo al alfabeto latín, por el campo nombre, después debe mostrarlos en pantalla. Usar quicksort para ordenar el arreglo.
20)       Un supermercado desea crear un arreglo de estructuras de nombre servicio_higienico en donde se puedan almacenar sus productos de aseo. Esta estructura tiene los siguientes campos: código del producto (1 letra y dos números), nombre del producto, precio, y cantidad en existencias. Ingresar los datos de los productos usando el procedimiento Ingreso(), al ingresar el nombre del producto validar si el tamaño del mismo es adecuado para el campo nombre del producto que tiene una capacidad de 12 letras como máximo. A través del procedimiento Búsqueda() obtener todos los datos de un producto ingresando su código. También se desea a través del procedimiento Actualizar(), disminuir la cantidad de existencias si se trata de una venta y aumentarla si se trata de una compra, reportar los datos actualizados después de la transacción.
21)       Hacer un programa que ordene una lista de artículos antiguos ascendentemente (del menos antiguo al más antiguo), por fecha de antigüedad. La lista es un arreglo de registros en donde cada registro es un artículo que contiene los siguientes campos: Código artículo, día, mes y año. Día, mes y año son del tipo cadena, siendo día y mes de 2 caracteres y año de 4 caracteres. Adicionalmente cada artículo tiene un campo denominado fecha_iso, que usa el formato ISO de fechas. Se debe usar fecha_iso para el ordenamiento de la lista de artículos antiguos.
22)      Un comercio tiene el inventario de productos en una base de datos que contiene algo menos de 8000 ítems. Los registros de la base de datos tienen el siguiente diseño: Número Item, Producto, Marca, Tipo, Costo, Stock Mínimo, Stock Actual. Se quiere realizar las siguientes operaciones:

a)             Insertar nuevos productos
b)             Borrar productos
c)             Modificar productos
d)             Buscar un producto

Simular la base de datos con un arreglo de 10000 elementos, de modo que siempre se encuentren ordenados por Número Item y que las últimas posiciones se encuentren disponibles. Si se alcanzara la capacidad máxima del vector, debe indicarse con un mensaje.

Problemas Propuestos de Recursividad


1)             Elaborar un algoritmo recursivo que determine si un número es positivo.
2)             Elaborar un algoritmo recursivo que permita hacer la división por restas sucesivas.
3)             Elaborar un algoritmo recursivo que permita sumar los elementos de un vector.
4)             Elaborar un algoritmo recursivo que permita multiplicar los elementos de un vector.
5)             Utilizar una función recursiva para calcular la suma:  1 + 2 + 3 + … +(n – 1) + n.
6)             Elaborar un algoritmo recursivo que permita invertir un número. Ejemplo: Entrada: 123 Salida: 321.
7)             Elaborar un algoritmo recursivo que permita sumar los dígitos de un número. Ejemplo: Entrada: 123 Resultado:6
8)             Programar un algoritmo recursivo que permita sumar los elementos de una matriz.
9)             Elaborar un algoritmo recursivo que calcule el Máximo Común Divisor de dos números
10)         Escribir un procedimiento recursivo que liste todos los pares de enteros positivos que son la suma de un número dado. Por ejemplo:  7 = 6 + 1,  5 + 2,  4 + 3  (no se pueden repetir las parejas 6 + 1 y 1 + 6).
11)         Utilizar una función recursiva que permita calcular la combinatoria de n elementos tomados en grupos de k.
12)         Utilizar una función recursiva que produzca la suma de los dígitos de un valor entero no negativo.
13)         Utilizar un procedimiento recursivo que permita contar las palabras de una frase.
14)         Utilizar una función recursiva para determinar si una cadena de caracteres ingresada por teclado es políndroma (descrito en el problema propuesto 13 del capitulo 6: Cadenas).
15)         Resolver un procedimiento recursivo que permita el cálculo de la función de Ackerman A(m,n):

 
16)         Resolver recursivamente el proceso de ordenamiento por el método de selección (descrito en el párrafo 2.2 y desarrollado en el problema ilustrativo 3 del capitulo 8: Ordenamiento y busqueda). Tener en cuenta que el ordenamiento por selección busca en un arreglo el elemento más pequeño, el cual se intercambia con el primero del arreglo. El proceso se repite con el subarreglo que comienza en el segundo elemento del arreglo. Cada pase por el arreglo da como resultado la colocación de un elemento en el lugar correcto. El desempeño de este ordenamiento es comparable con el ordenamiento de burbuja: para un arreglo de n elementos, se necesita hacer n-1 pases y por cada subarreglo, hay que hacer n-1 comparaciones para encontrar el valor más pequeño. Cuando el subarreglo que se esta procesando sólo contiene un elemento, el arreglo está ordenado.
17)         Utilizar un procedimiento recursivo que ordene una lista de números enteros en orden decreciente por el método de inserción (descrito en el párrafo 2.3 y desarrollado en el problema ilustrativo 4 del capitulo 8: Ordenamiento y busqueda). El algoritmo utilizado consiste en:

a)             Buscar el elemento más pequeño y situarlo en primera posición.
b)             Clasificar el resto de la lista.

18)         Resolver recursivamente el problema de la búsqueda lineal en un arreglo. La función deberá recibir como argumentos un arreglo de enteros y su tamaño. Si se encuentra la clave de búsqueda, devuelva el subíndice del arreglo; de otro modo, devuelva –1.
19)         Encontrar una fórmula para el número de veces que un anillo se transfiere de un alambre al otro en la Torre de Hanoi con n anillos.