/* */

19 de marzo de 2007

.
Módulo II

Estos ejercicios fueron cedidos gentilmente por la profesora Adriana Adámoli.

Ej. MII-5
Dados los siguientes dibujos que corresponden a distintos tipos de registros realice su declaración en Pascal utilizando la sección Type, y especifique la nomenclatura para acceder al registro y cada uno de sus campos.



Ej. MII-8
Dado el archivo INSCRIP.DAT desarrolle un programa que solicitando por teclado un código de materia permita seleccionar todos los registros que se anotaron para rendirla y los grabe en otro archivo (MATFINALES.DAT), con el mismo diseño.

INSCRIP.dat
  • Nro. de legajo (8 dígitos)
  • Código de materia (6 dígitos)
  • Día del examen (1..31)
  • Mes del examen (1..12)
  • Año del examen (4 dígitos)
  • Nombre-Apellido (25caract)

Ej. MII-10
Dado el archivo INSCRIP.DAT que contiene todas las inscripciones del día, y otro con el mismo diseño que contiene las inscripciones anteriores (FINALES.DAT), desarrolle un programa que agregue al archivo de inscripciones anteriores el contenido del archivo del día. Al final del proceso emita un listado del archivo de los registros agregados al archivo.

Ej. MII-11
Dado el archivo INSCRIP.DAT desarrolle un programa que genere un archivo ordenado por número de legajo (cada registro debe tener los campos legajo y apellido y nombre) para todos los alumnos que se inscribieron una o más veces. Cada legajo debe ocupar una posición única y predecible en el archivo. El intervalo de los legajos es 80001 a 110000, pueden no presentarse todos los legajos.

Ej. MII-12
Dado el archivo generado en el ejercicio MII-11, desarrolle un programa que elimine, si los hubiese, los registros que no contengan datos válidos de la siguiente manera:
  1. Genere un nuevo archivo, elimine el archivo original y renombre al archivo actual
  2. Compacte en el mismo archivo
Ej. MII-15
Dado un conjunto (<100) de valores enteros de los cuales el último es cero y no debe procesarse:
  1. informe el valor mínimo, su posición dentro del conjunto, si el mínimo no es único, informar todas las posiciones donde se encuentre.
  2. genere e informe un vector B de 2 elementos, donde el primer elemento sea el valor máximo del vector, y el segundo elemento el valor siguiente.
  3. informe la productoria de los elementos impares que ocupen posición par.
  4. Informe el conjunto normalizado, donde cada elemento del conjunto se divide por el mayor valor absoluto.

Ej. MII-16
Dado un número N (<25), y dos vectores A y B de N elementos que contenga valores reales
  1. genere e informe un tercer vector C intercalando los valores de posición impar de A y los valores de posición par de B.
  2. genere e informe un tercer vector D donde cada elemento contenga un valor cero si los elementos de una misma posición de A y B son iguales, o un valor uno si no lo son.

Ej. MII-17
Dado un número N (<30), y un vector VEC de N elementos que contenga valores enteros invierta el contenido del vector y lo informe:
  1. utilizando otro vector y dos subíndices
  2. utilizando otro vector y un solo subíndice
  3. utilizando el mismo vector y dos subíndices
  4. utilizando el mismo vector y un solo subíndice

Ej. MII-18
Dado un número N (<20), y dos vectores A y B de N elementos que contenga valores entre 0..9 que representan números naturales muy largos
  1. genere e informe un tercer vector SUMA de N+1 elementos que sea el resultante de la suma de los dos números.
  2. genere e informe un tercer vector RESTA de N elementos que sea el resultante de la resta de los dos números.

Ej. MII-19
Dado un número N (<20), y un vector REFER de N elementos que contenga valores enteros positivos, en orden creciente, y un valor X desarrolle un algoritmo que determine e informe:
  1. Con cual número de elemento del vector coincide, o
  2. Entre cuales dos elementos se encuentra, o
  3. Si es menor que el primero o mayor que el último

Ej. MII-20
Convertir el Ej. MII-19 utilizando la función BusquedaBinariaEnVector

Ej. MII-21
Dado un conjunto de valores naturales (<20) de los cuales el último es un cero, y no debe procesarse, genere e informe un vector que contenga los factoriales de los valores ingresados. Utilice la función desarrollada en el Ej. MI-36.

Ej. MII-22
Dado un número N (<50), y un vector VEC de N valores enteros positivos ordene el contenido del vector en orden ascendente, y lo informe:
  1. en orden ascendente
  2. en orden descendente

Ej. MII-23
Convertir el Ej. MII-22 utilizando el procedimiento Burbujeo

Ej. MII-25
Dado un número N (<=50) y un conjunto de Nombres y Fechas de nacimientos (AAAAMMDD), informar el conjunto:
  1. ordenado por nombre
  2. ordenado por fecha y nombre
  3. ordenado por nombre y fecha
NOTA: Modifique y utilice el procedimiento Burbujeo.

Ej. MII-26
Una empresa de aviación realiza 500 vuelos semanales a distintos puntos del país y requiere desarrollar un programa para la venta de pasajes.

Para ello dispone de un archivo ‘Vuelos.dat’, con un registro por cada uno de los 500 vuelos que realiza, sin ningún orden, con el siguiente diseño de registro:
a.1) código de vuelo (6 caracteres) a.2) cantidad de pasajes disponibles ( 3 dígitos)

También se dispone de otro archivo ‘Compradores.dat’, con los potenciales compradores y con el siguiente diseño de registro:
  • código de vuelo
  • cantidad de pasajes solicitados (3 dígitos)
  • DNI del solicitante (8 dígitos)
  • apellido y nombre del solicitante (25 caracteres)
Se pide:
1) Para los solicitantes a los cuales se les venden pasajes, emitir el siguiente listado:



2) Al final del proceso emitir el siguiente listado ordenado por código de vuelo:



Nota: Se le vende al solicitante si la cantidad de pasajes que solicita está disponible, en caso contrario se computa como pasajes no vendidos. Desarrolle el ejercicio utilizando la siguiente estructura de datos:



Ej. MII-27
Una empresa que distribuye mercadería hacia distintas localidades del interior dispone de los siguientes archivos: un archivo ‘Destinos.dat’, con información de la distancia a cada uno de los destinos y con el siguiente diseño de registro:
  1. número de destino (3 dígitos)
  2. distancia en kilómetros ( single)
También se dispone de otro archivo ‘Viajes.dat’, con los viajes realizados por cada camión y con el siguiente diseño de registro:
  1. patente del camión (6 caracteres, no son más de 200 camiones)
  2. número de destino
  3. número de chofer (1..150)
Se pide desarrollar la metodología necesaria para realizar un programa que informe:
  1. Cantidad de viajes realizados a cada destino
  2. Número de chofer con menor cantidad de km recorridos
  3. Patente de los camiones que viajaron al destino 116 sin repeticiones de las mismas.

Ej. MII-28
Genere e informe una matriz MUL[10x10] con las tablas de multiplicar.

Ej. MII-29
Dado un valor N (<50), y una matriz MAT[NxN] que contiene valores enteros. Se pide:
  1. Leerla por fila
  2. Informarla por columna
  3. Informar la sumatoria de sus elementos y el valor promedio
  4. Informar el máximo elemento y su ubicación (fila y columna)
  5. Informar el mínimo de cada fila y el máximo de cada columna
  6. Informar cuantos elementos positivos hay en la diagonal principal y cuantos negativos en la diagonal secundaria

Ej. MII-31
Dado un valor N y otro R (ambos <50), MAT[NxR] que contiene valores enteros positivos. Informe la ubicación del primer cero de cada fila o un cartel indicando si no lo hay.
Nota: Utilice una función que reciba como parámetro una matriz de NxR, la cantidad de elementos de la columna, y un número de fila, retorne el número de columna donde encontró el primer cero o un número negativo si no lo hay en la fila.

Ej. MII-32
Dado un valor N (<30), y una matriz MAT[NxN] que contiene valores reales. Se pide:
  1. Generar e informar un vector VECSUMCOL donde cada componente sea la suma de la columna homóloga
  2. Generar e informar un vector de registro donde el primer campo de cada componente contenga el valor máximo de cada fila y el segundo campo la posición del máximo dentro de la fila

Ej. MII-33
Un negocio de ropa, vende sus artículos en distintos talles. Para realizar la facturación dispone de los siguientes archivos: un archivo ‘Articulos.dat’, con los precios de cada artículo y talle que vende, con el siguiente diseño de registro:
  1. código de articulo (1..100)
  2. talle (1..5)
  3. precio (real)
También se dispone de dispone de un conjunto de ventas a facturar, que se ingresan por teclado con los siguientes datos: código de artículo, talle y unidades (1 dígito). Las ventas finalizan con un código de artículo negativo.

Desarrollar un programa que:
  1. informe el precio de la venta, considerando un descuento del 10% si las unidades vendidas son superiores a tres más el 21% del IVA.
  2. al final del proceso emita el siguiente listado, ordenado por artículo y talle ascendente:


Ej. MII-34
Se dispone un archivo binario de inscripción de alumnos a exámenes finales MAESTROFINALES.DAT y otro con las inscripciones del día de hoy DIAFINALES.DAT, ambos ordenados ascendente por código de materia y con el siguiente diseño:
  1. Nro de legajo (8 dígitos)
  2. Código de materia (6 dígitos)
  3. ApellidoNombre(25caract)
Se pide desarrollar un programa que genere un nuevo archivo de inscripciones a finales FINALESACT.DAT resultante del apareo de los dos archivos anteriores, con el mismo orden y diseño.

Ej. MII-35
Resolver el Ej. MII-34 donde ambos archivos estén ordenados por código de materia y apellidonombre.

Ej. MII-36
Resolver el Ej. MII-34 donde el archivo de inscripciones del día DIAFINALES.DAT posee como máximo 500 registros, y:
  1. no posea ningún ordenamiento
  2. ordenado por legajo

Ej. MII-37
Resolver el Ej. MII-35 donde el archivo de inscripciones del día DIAFINALES.DAT posee como máximo 500 registros, y:
  1. no posea ningún ordenamiento
  2. ordenado por legajo y código de materia

Ej. MII-38
Se realiza un censo en las distintas escuelas del país. La información se encuentra en el archivo binario DATOSESCUELAS.DAT con un registro por cada escuela censada, con el siguiente diseño:
  1. Nombre de provincia (20 caracteres)
  2. Nombre de la Ciudad (20 caracteres)
  3. Nro. de escuela (3 dígitos)
  4. Cantidad de alumnos (4 dígitos)
El archivo está ordenado por ciudad dentro de provincia. Se pide listarlas en ese orden según el siguiente diseño:



Nota: utilice el siguiente juego de datos para probar el algoritmo.



Ej. MII-39
Dado un archivo binario ‘ACTASFINALES.dat’ que contiene las actas de los exámenes finales de las distintas materias, ordenado por libro y folio y con el siguiente diseño
  1. Libro (6 dígitos)
  2. Folio ( 1..999)
  3. Fecha (aaaammdd)
  4. Código materia (6 dígitos)
  5. Legajo (10 dígitos)
  6. Apellido y nombre (20 caracteres)
  7. Nota (1..10, 0 indica ausente)
Se pide desarrollar todos los pasos necesarios para realizar un programa que grabe un archivo ‘TOTALES.dat’ ordenado por libro y folio con el siguiente diseño:
  • Libro (6 dígitos)
  • Folio ( 1..999)
  • Total alumnos inscriptos (1..20)
  • Total alumnos ausentes (1..20)
  • Total alumnos aprobados (1..20)
  • Total alumnos desaprobados (1..20)

Ej. MII-40
Dado el archivo ‘ALUMNOS.dat’ con los datos personales de alumnos ordenado por legajo, con el siguiente diseño:
  1. Legajo (8 dígitos)
  2. Apellido y nombre ( 30 caracteres)
  3. Domicilio (20 caracteres)
  4. Código postal (4 dígitos)
  5. Teléfono (10 caracteres)
  6. Año de ingreso (4 dígitos)
y otro archivo con el mismo orden que el mencionado llamado ‘NOVEDADES.dat’, con las actualizaciones (altas, bajas, y modificaciones) a ser aplicadas, donde cada registro contiene además de todos los campos de Alumnos.dat un código de operación (‘A’= Alta, ‘B’= Baja, ‘M’=

Se pide desarrollar todos los pasos necesarios para realizar un programa que genere un archivo actualizado ‘ALUMACTU.dat’ con el mismo diseño.

Ej. MII-41
Resolver el ejercicio Ej. MII-40 donde el archivo de novedades no posee orden alguno, y la cantidad máxima de registros es 100. Realice un algoritmo por cada una de las siguientes restricciones de memoria.
Restricciones:
  • memoria para arrays 7200 bytes
  • memoria para arrays 900 bytes

Ej. MII-42
Dado el archivo ‘PRODUCTOS.dat’ con los datos de los productos que vende un mayorista, ordenado por código de producto y con el siguiente diseño:
  • Código de producto (8 caracteres)
  • Descripción del producto ( 30 caracteres)
  • Cantidad en Stock (4 dígitos)
  • Precio de venta (real)
  • Estado del registro (‘A’=activo / ‘I’= inactivo )
y otro archivo sin ningún orden llamado ‘NOVEDADES.dat’, con las actualizaciones (altas, bajas, y modificaciones) a ser aplicadas, donde cada registro contiene además de todos los campos de Productos.dat un código de operación (‘A’= Alta, ‘B’= Baja, ‘M’=

Se pide desarrollar todos los pasos necesarios para realizar un programa que actualice el archivo ‘Productos.dat’ sobre sí mismo.

NOTA: Los códigos de los productos a dar de alta siempre tendrán un valor superior a los que se encuentren ya grabados en Productos.dat, y no son más de 20. Restricciones memoria para arrays 100 bytes

Ej. MII-43
Una biblioteca maneja la siguiente información:
a) un archivo de Libros, ordenado por código de libro y con el siguiente diseño:
  • código del libro (6dígitos)
  • título del libro (30 caract)
  • cantidad de ejemplares (2 dígitos)
  • ubicación (3 caract)
  • código de la editorial (1..200)
  • autor (25 caract)
b) un archivo de editoriales ordenado alfabéticamente por nombre de la editorial, con el siguiente diseño.
  • nombre de la editorial (25 caracteres)
  • código de la editorial (1..200)
c) un archivo de consultas realizadas durante el primer semestre del año. Los diferentes libros consultados no superan los 1000, y el diseño del registro es el siguiente:
  • código del libro
  • fecha de consulta (aaaammdd)
Se pide realizar la metodología necesaria para obtener un programa que:
1) Emitir un listado con los libros que tuvieron como mínimo 20 consultas en cada mes del semestre, con el siguiente diseño, ordenado por código:



2) Grabar un archivo ordenado alfabéticamente por editorial con el siguiente diseño:
  • nombre de la editorial (25 caracteres)
  • porcentaje de libros que fueron consultados en el semestre (single)
Restricciones: memoria para arrays 32000 bytes.

Ej. MII-44
Una empresa de construcción posee 10 depósitos donde almacena el stock de sus materiales, según una cierta capacidad. Cada vez que realiza compras de materiales o debe enviar estos a las distintas obras en construcción debe almacenar o retirar materiales de los distintos depósitos. Y para ello cuenta con los siguientes archivos:
a) un archivo de direcciones de los 10 depósitos, sin ningún orden y con el siguiente diseño:
  • número de depósito (1..10)
  • dirección del depósito (30 caracteres)
b) un archivo de stock de materiales (máximo 100) sin ningún orden con el siguiente diseño:
  • código de material (6 dígitos)
  • número de depósito de almacenamiento
  • cantidad en stock en el depósito (word)
  • capacidad de almacenamiento en el depósito (word)
Un mismo material puede estar en uno, en varios o en todos los depósitos.

c) un archivo de compras realizadas por la empresa con orden natural y con el siguiente diseño
  • número de orden de compra (longint)
  • proveedor (20 caract)
  • código de material
  • cantidad comprada (word)
d) un archivo de pedidos de obras pendientes, con el orden natural y el siguiente diseño:
  • d.1 número de pedido (longint)
  • d.2 dirección de la obra (20 caracteres)
  • d.3 código de material
  • d.4 cantidad solicitada (word)
Se pide realizar la metodología necesaria para desarrollar un programa que:
1) Por cada orden de compra distribuir la cantidad comprada entre los distintos depósitos partiendo siempre desde el depósito número 1 y hasta completar la capacidad. Y emitir por cada compra que se pueda almacenar parcial o totalmente el siguiente listado:



2) Por cada pedido pendiente retirar la cantidad solicitada entre los distintos depósitos partiendo siempre desde el depósito número 1 y hasta agotar stock. Y emitir por cada pedido pendiente que se pueda satisfacer parcial o totalmente el siguiente listado:



3) Actualizar archivos de la siguiente manera:
  • archivo b) actualizar stock a partir de las compras almacenadas o los pedidos satisfechos, regrabando los registros una sola vez en toda la ejecución del programa
  • archivo c) actualizar cantidad comprada con un valor 0 si fue almacenado en su totalidad o con la cantidad que no logró almacenarse en ningún depósito..
  • archivo d) actualizar cantidad solicitada con un valor 0 si fue satisfecho en su totalidad o con la nueva cantidad pendiente.
Restricciones: memoria para arrays 4800 bytes.








.