Prog2 - Tp 1 Y 2 Kloster - 20090822

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Prog2 - Tp 1 Y 2 Kloster - 20090822 as PDF for free.

More details

  • Words: 10,325
  • Pages: 35
UNIVERSIDAD TECNOLOGICA NACIONAL  FAC. REG. GRAL. PACHECO

TECNICO SUPERIOR EN PROGRAMACION PROGRAMACION II GUIA DE TRABAJOS PRACTICOS

Programación II

Página: 1

TRABAJO PRACTICO Nº 1 REPASO GENERAL En los ejercicios de todos los TP se sugiere utilizar punteros en la resolución de los mismos,  en lugar de la notación de subíndice. 1) Dada una lista de 10 números enteros, cargarlos en un vector. Luego determinar e  informar cual es el máximo de ellos. Resolverlo de los siguientes modos: a) Suponer que el máximo es único. b) Suponer que el máximo podría estar repetido, por lo tanto informar cuantas veces  aparece en el vector. 2) Dada una lista de 10 números enteros, cargarlos en un vector. Luego determinar e  informar cual es el máximo de ellos y en que posición dentro del vector se encuentra. Considerar que las posiciones del vector empiezan desde el cero.  Resolverlo de los  siguientes modos: a) Suponer que el máximo es único. b) Suponer que el máximo podría estar repetido, por lo tanto informar en que posiciones  aparece en el vector. 3) Dada una lista de 10 números enteros, cargarlos en un vector. Luego ordenar el vector  en forma descendente (de mayor a menor) e informar por pantalla el nuevo vector. 4) Dada una lista de 10 números enteros, cargarlos en un vector. Luego ordenar el vector  en forma descendente (de mayor a menor) e informar por pantalla el nuevo vector,  indicando además para cada número cual era su orden original antes de ser ordenado. Nota: En lista original el orden comienza desde 1 y llega hasta 10. Resolver el ejercicio de los siguientes modos: a) Usando 2 vectores independientes. b) Usando un vector de registros. 5) Dada una lista de 15 códigos de clientes, todos números de 3 dígitos y desordenados,  cargarlos en un vector. Ingresar luego un código de entre los 15 anteriores y determinar e informar la posición del  mismo dentro del vector. 6) Dada una lista de 15 códigos de clientes, todos de tipo 5 caracteres y desordenados,  cargarlos en un vector. Ingresar luego un código de entre los 15 anteriores y determinar e informar la posición del  mismo dentro del vector. 7) Dada una lista de 15 códigos de clientes, todos números de 3 dígitos y ordenados de  menor a mayor, cargarlos en un vector. Ingresar luego un código de entre los 15 anteriores y determinar e informar la posición del  mismo dentro del vector. 8) Dada una lista de 15 códigos de clientes, todos números de 3 dígitos y ordenados de  menor a mayor, cargarlos en un vector. Ingresar luego un código, si el mismo es encontrado determinar e informar la posición del  mismo dentro del vector. Si fuera un código inexistente informar con un mensaje de error. 9) Dada una lista de 15 números cargarlos en una matriz de 3 filas y 5 columnas. Luego  informar para cada fila cual es el máximo valor y en que orden se encuentra dentro de la  misma.

Programación II

Página: 2

10) Dada una lista de 15 números cargarlos en una matriz de 3 filas y 5 columnas. Luego  informar para cada columna cual es el mínimo valor y en que orden se encuentra dentro de  la misma. 11) Dada una lista de 15 números cargarlos en una matriz de 3 filas y 5 columnas. Luego  ordenar cada fila de la matriz en forma descendente (de mayor a menor) e informar por  pantalla como quedó cada fila. 12) Dada una lista de 15 números cargarlos en una matriz de 3 filas y 5 columnas. Luego  ordenar cada fila de la matriz en forma descendente (de mayor a menor) e informar por  pantalla como quedó cada fila reordenada y cual era el orden de cada número en la fila de la  matriz original. 13) Dada una lista de 15 números cargarlos en una matriz de 3 filas y 5 columnas. Luego  ordenar cada columna de la matriz en forma descendente (de mayor a menor) e informar  por pantalla como quedó cada columna. 14) Dada una lista de 15 números cargarlos en una matriz de 3 filas y 5 columnas. Luego  ordenar cada columna de la matriz en forma descendente (de mayor a menor) e informar  por pantalla como quedó cada columna reordenada y cual era el orden de cada número en la  columna de la matriz original. 15) Una empresa de transporte de carga por camión posee 30 tarifas distintas de acuerdo al  destino de los envíos que deba realizar. Dispone de un lote de registros con la siguiente información: ­ Número de Tarifa (4 dígitos, arbitrarios y no correlativos) ­ Importe por KM. Este primer lote no viene ordenado. A continuación dispone de un segundo lote de registros con la información de los envíos  que se realizaron durante la semana pasada, conteniendo cada uno de ellos los siguientes  campos: ­ Número de Camión (1 a 100) ­ Número de Tarifa ­ Kms. recorridos Este lote finaliza con un registro con número de camión igual a cero. Puede haber más de  un registro para el mismo número de camión y número de tarifa. Se nos pide realizar un programa que determine e informe: a) El total recaudado por cada tarifa. b) Un listado con el siguiente diseño, ordenado por total recaudado en forma descendente: Número de Camión                           Total recaudado (en $)                                          99                                               99999.99                                          99                                               99999.99                                            .                                                       .                                            .                                                       . c) Indicar el número de camión que recorrió la menor cantidad de kms. en total entre los  que realizaron viajes, los que no realizaron viajes no tenerlos en cuenta. Observación: Cada camión realizó cero, uno o varios viajes.

Programación II

Página: 3

16) Una empresa telefónica desea realizar la facturación de sus abonados por medio de un  programa. Para ello dispone de la siguiente información de sus 20 tarifas: ­ Número de Tarifa (3 dígitos, arbitrarios y no correlativos) ­ Cantidad de llamadas libres ­ Abono de la tarifa ­ Importe de cada una de las llamadas excedidas El importe que se debe facturar a un abonado se determina con el importe del abono de la  tarifa correspondiente, al cual se le adiciona el importe por cada una de las llamadas  excedidas (si las hubiera). Existe un segundo lote de registros con la siguiente información: ­ Número de Abonado (5 dígitos, arbitrarios y no correlativos) ­ Número de Tarifa (3 dígitos, arbitrarios y no correlativos) ­ Cantidad de llamadas realizadas El fin de esta información está dado por un número de abonado igual a cero y no existe  ningún orden en los mismos. La empresa nos informó que hay como máximo 500  abonados. Se pide emitir un listado con el importe que pagará cada abonado, ordenado de mayor a  menor por el importe, con el siguiente formato: Nro. de Abonado             Nro. de Tarifa          Importe a Pagar                                99999                                999                           500,00                                99999                                999                           480,00                                     .                                       .                                  . 17) Una empresa tiene un lote de registros con todas la ventas que se efectuaron durante año  anterior. Cada registro contiene la siguiente información: ­ Número de factura ­ Día (1 a 31) ­ Mes (1 a 12) ­ Código de artículo (3 dígitos no correlativos) ­ Cantidad vendida  Este lote finaliza con un registro con número mes igual a cero. Con esta información se debe generar un listado con el siguiente formato:              Código de Artículo                    Cantidad Total Vendida 999 999

9999 9999

Nota: La empresa nos informó que tiene un total de 300 artículos diferentes. No todos  aparecen en el lote de ventas anterior, puesto que de algunos no se vendió ninguna unidad. Sin embargo, un mismo artículo puede aparecer varias veces repetido en el lote. 18) Una empresa dispone de un lote de registros desordenados con los siguientes datos de  sus 200 clientes: ­ Número de Cliente (4 dígitos no correlativos) ­ Zona Geográfica (1 a 5) ­ Saldo Inicial  - Código de Estado: ‘A’(activo), ‘I’(inactivo) Programación II

Página: 4

-

Denomimación

Programación II

Página: 5

Se dispone de un segundo lote de registros desordenados con todas las ventas del día que  efectuó la empresa. Cada registro contiene los siguientes datos: ­ Número de Cliente (4 dígitos no correlativos) ­ Importe de la Venta Este lote finaliza con un registro con importe igual a cero. Podría contener ventas erróneas  de clientes que están Inactivos. Realizar un programa para determinar e informar: a) Procesar las ventas y actualizar el Saldo del Cliente. b) Listar los números de los clientes que aparecieron en el segundo lote y cuyo código de  estado era Inactivo (ventas erróneas), con el siguiente formato: CLIENTES INACTIVOS CON VENTAS Número de Cliente 9999

Zona  99

Cada cliente debe listarse una sola vez, aunque haya habido varias ventas erróneas. c) Listar aquellos clientes que al finalizar el proceso quedaron con saldo deudor mayor a  $  500.­, con el siguiente diseño, y ordenado por saldo de mayor a menor. SALDOS DEUDORES Nro. de Cliente              Denominación             Saldo                                         xxxx                      Perez, Juan                 800.90                                         xxxx                      Garcia, Roberto          781.45 19) Una empresa dispone de un lote de registros con las ventas acumuladas por los  vendedores desde el inicio del mes hasta el día anterior, con el siguiente diseño de registro: ­ Código de Vendedor (4 dígitos no correlativos) ­ Cantidad Vendida acumulada desde inicio del mes En este lote no aparecen todos los vendedores, puesto que algunos no vendieron aún ningún  artículo en el mes. El lote finaliza con un registro con cantidad vendida igual a cero. Se dispone de un segundo lote con los datos de las ventas del día de hoy con el siguiente  detalle: ­ Número de Cliente (1 a 10.000) ­ Código de Vendedor (4 dígitos no correlativos) ­ Número de Artículo (1 a 35) ­ Cantidad Vendida El fin del lote se indica con un registro con número de cliente igual a cero. En este segundo lote pueden aparecer vendedores que no figuraban en el primero. En total  la empresa cuenta con un máximo de 50 vendedores. Se dispone de un tercer lote con los datos de los 35 artículos, ordenado secuencialmente por  número de artículo y con los siguientes datos: ­ Número. de Artículo (1 a 35) ­ Precio Unitario ­ Stock disponible ­ Stock mínimo Confeccionar un programa para:

Programación II

Página: 6

a) Informar el número de vendedor que más pesos recaudó, totalizando las ventas del día de  hoy. b) Informar por listado aquellos artículos que hayan quedado con stock disponible por  debajo del stock mínimo, con el siguiente formato: ARTÍCULOS CON STOCK INFERIOR AL MÍNIMO                         Art.      Stock Disp.    Stock Mínimo    Diferencia                         xx              xxx                    xxx               ­ xxx 20) Indique cuales son los resultados que emite el siguiente programa, justificando  claramente como llegó a los mismos. # include <stdio.h> void cargar(int (*)[5]);     /* void cargar(int [3][5]); */ void calcular(int (*)[5],int *);   /* void calcular(int [3][5],int [5]);  */ void mostrar(int *); void main (void) {      int mat[3][5];     int vec [5];    cargar(mat);    calcular(mat,vec);    mostrar(vec);  }      void cargar(int (*m)[5]) {     int i,j;     for (i=0;i<5;i++) for (j=0;j<3;j++)       if (i = = j)             *(*(m+j)+i)=i*j;                         else                       *(*(m+j)+i)=0; } void calcular (int (*m)[5], int *v) {    int i,j,cont;    for (i=0;i<3;i++)        {              cont = 0;     for (j=0;j<5;j++) cont += *(*(m+i)+j);   *(v+i)=cont;         }   }  void mostrar (int *h) {     int i;

Programación II

Página: 7

    for (i=0;i<=2;i ++)         printf(“Resultado: %d\n”, *(h+i)); }         21) Indique cuales son los resultados que emite el siguiente programa, justificando  claramente como llegó a los mismos. # include <stdio.h> void cargar(int (*)[5]);     /* void cargar(int [3][5]); */ void calcular(int (*)[5],int *);   /* void calcular(int [3][5],int [5]);  */ void mostrar(int *); void main (void) {      int mat[3][5];     int vec [5];    cargar(mat);    calcular(mat,vec);    mostrar(vec);  }      void cargar(int (*m)[5]) {     int i,j;     for (i=0;i<5;i++) for (j=0;j<3;j++)      *(*(m+j)+i)=i+j;      } void calcular (int (*m)[5], int *v) {    int i,j,suma;

/* void calcular(int m[3][5],int v[5]);  */

   for (i=0;i<3;i++)        {     for (suma=0,j=0;j<5;j++) suma += *(*(m+i)+j);   *(v+i)=suma;         }   }  void mostrar (int *h) {     int i;     for (i=4;i>=0;i ­ ­)        {           printf(“Resultado: %d\n”, *(h+i));         } } 22) Indique cuales son los resultados que emite el siguiente programa, justificando  claramente como llegó a los mismos. # include <stdio.h> # include 

Programación II

Página: 8

void cargar(int (*)[5]); void mostrar(int (*)[5]); void main() { int mat[3][5]; clrscr(); cargar(mat); mostrar(mat); getch(); } void cargar(int m[][5]) { int i, j; for(i=0;i<3;i++) for(j=0;j<5;j++) { if((i­j)= =0) *(*(m+i)+j))=10; }  } void mostrar(int (*m)[5]) { int i,j; for(j=0;i<5;j++) for(i=0;i<3;i++) { printf("%d\n",*(*(m+i)+j)); }  } 23) Indique cuales son los resultados que emite el siguiente programa, justificando  claramente como llegó a los mismos. #include <stdio.h> #define EOS '\0' void quehace(char *,char *); void main (void) {  char cad1[30],cad2[30];  int cant;  clrscr();  printf("Ingrese una cadena.\n");  gets(cad1);  printf("Ingrese una cadena.\n");  gets(cad2);  quehace(cad1,cad2);  printf("El resultado es: \n");  puts(cad1); }

Programación II

Página: 9

void quehace(char *s,char *t) {  char *p,*fin;  for (p=s;*p;p++)        ;  fin=p;  for (p=t;*fin++=*p;p++)       ; } 24) Indique cuales son los resultados que emite el siguiente programa, justificando  claramente como llegó a los mismos. #include <stdio.h> #define EOS '\0' void quehace(char *,char *); void main (void) {  char cad1[30],cad2[30];  int cant;  clrscr();  printf("Ingrese una cadena.\n");  gets(cad1);  printf("Ingrese una cadena.\n");  gets(cad2);  quehace(cad1,cad2);  printf("El resultado es: \n");  puts(cad1); } void quehace(char *s,char *t) {  char *p,*fin,*r;  for (p=s;*p;p++)        ;  fin=p;  for (r=t;*r;r++)       ; for (p=t;*fin++=*p;p++)        ;  return r­t; }

Programación II

Página: 10

TRABAJO PRACTICO Nº 2 ARCHIVOS 1) Se dispone de la información de los 10 artículos de una empresa y se desea grabar la  misma en un archivo. Cada registro contiene la siguiente información: ­ Número de Artículo (1 a 10) ­ Descripción (string[30])  ­ Precio Unitario (float) Confeccionar el diagrama y el programa C para resolver el problema. 2) Se dispone de la información de las ventas de un comercio y se desea grabar la misma  en un archivo. Cada registro contiene la siguiente información: ­ Número de Artículo (1 a 10) ­ Número de Cliente (entero) ­ Cantidad. de unidades vendidas (entero) El lote finaliza con un registro con número de artículo negativo. Puede haber varios  registros para el mismo artículo y para el mismo cliente. Confeccionar el diagrama y el programa C para resolver el problema. 3) Confeccionar el diagrama y el programa C para leer e imprimir el archivo generado en  el ejercicio 1. 4) Se dispone de un archivo de artículos con registros que contienen la siguiente  información: ­ Número de Artículo (1 a 10) ­ Descripción (string[30] ­ Precio Unitario (float) Los registros se encuentran desordenados. Se dispone de un segundo archivo con la información de las ventas de los artículos, cada  registro contiene la siguiente información: ­ Número de Articulo (1 a 10) ­ Número de Cliente (entero) ­ Cantidad. de unidades vendidas Puede haber varios registros para el mismo artículo. Determinar e informar: a) Cada uno de los números de los artículos que no registraron ventas. b) Un listado ordenado en forma decreciente por monto con el siguiente formato: Número de Artículo 99 99

Monto total obtenido por ventas 9999.99 9999.99

Observación: Para probar el ejercicio se pueden crear los archivos de entrada utilizando los  programas de los ejercicios 1 y 2 respectivamente. 5) Se dispone de un archivo de artículos con registros que contienen la siguiente  información: Programación II

Página: 11

­ Número de Artículo (1 a 50000) ­ Descripción (string[30] ­ Precio Unitario (float) Los registros se encuentran ordenados correlativamente por número de artículo. Se dispone de un segundo archivo con la información de las ventas de los artículos, cada  registro contiene la siguiente información: ­ Número de Articulo (1 a 50000) ­ Cantidad de unidades vendidas Puede haber varios registros para el mismo artículo. Determinar e informar el total recaudado por la empresa en concepto de ventas. 6) Una empresa dispone del archivo SALDOS.DAT, ordenado por número de cliente, con  los siguientes datos de sus 250 clientes: ­ Número de Cliente (1 a 250) ­ Razón Social (string[30]) ­ Importe Total Facturado ­ Total de pagos efectuados ­ Saldo Deudor (Importe Total Facturado – Total de pagos efectuados) ­ Código de Estado: A(activo), I(inactivo) Se dispone de un segundo archivo, VENTAS.DAT, con todas las ventas del día que efectuó  la empresa. Cada registro contiene los siguientes datos: ­ Cliente (1 a 235) ­ Zona (0 a 99) ­ Importe de la Venta Este archivo se encuentra desordenado y puede haber varios registros para el mismo cliente  y zona. Puede haber registros erróneos con ventas a clientes inactivos. Realizar un programa C para: a) Actualizar a partir de las ventas, los campos Importe Total Facturado y Saldo Deudor) de  cada cliente en el archivo SALDOS.DAT. b) Listar los números de los clientes y la zona de las ventas que no se pueden procesar por  no estar el cliente ACTIVO, con el siguiente formato: CLIENTES INACTIVOS CON VENTAS Número de Cliente           Zona                                                            xxxx                        xx Cada cliente se debe informar una sola vez. c) Listar aquellos clientes activos que al finalizar el proceso quedaron con saldo deudor  mayor a  $ 500.­, con el siguiente diseño: SALDOS DEUDORES                                        Nro. de Cliente      Razón Social            Saldo                                                 xxxx                Perez, Juan             800.90                                                     .                           .                           .                                                     .                           .                           .                                                 xxxx               Garcia, Roberto       501.45 Programación II

Página: 12

7) Una empresa dispone del archivo VENTAS.AAA con las ventas acumuladas por sus  vendedores hasta la fecha de ayer, con el siguiente diseño de registro: ­ Código de Vendedor (string[4]) ­ Número de Artículo (1 a 35) ­ Cantidad Vendida (entero, acumulado hasta el día de ayer) Hay un total de 12 vendedores, y no todos los vendedores vendieron todos los artículos. Las ventas se encuentran discriminadas por vendedor y por artículo. Se dispone de un segundo archivo, VENTAS.NUE, con los datos de las nuevas ventas a la  fecha de hoy con el siguiente detalle: ­ Número de Cliente (1 a 500.000) ­ Razón Social (string[25]) ­ Código de Vendedor (string[4]) ­ Número de Artículo (1 a 35) ­ Cantidad Vendida Se dispone de un tercer archivo, ARTIC.DAT, con los datos de los 35 artículos, ordenado  secuencialmente por número de artículo y con los siguientes datos: ­ Número de Artículo (1 a 35) ­ Descripción (string[35]) ­ Precio Unitario ­ Stock disponible ­ Stock mínimo Confeccionar un programa C para: a) Emitir un listado con la información de cada venta efectuada y con el siguiente diseño: VENTAS EFECTUADAS AL XX DE XXXXXXXXXXX DE 20XX     Cliente    Artículo   Descripción    Cantidad     Precio     Importe                                                                                                   Unitario    Total                                         xxxxxx      xx      TV.Color        xx            xxx.xx     xxxx.xx                                     .             .              .                  .                  .               .                                     .             .              .                  .                  .               . La fecha del día debe ser leída desde el sistema. b) Informar el código de vendedor que recaudó más dinero en total considerando solamente  las ventas del día de la fecha. c) Generar un archivo VENTAS.BBB con igual diseño que VENTAS.AAA, con las ventas  actualizadas. d) Informar por listado aquellos artículos que hayan quedado con stock disponible por  debajo del stock mínimo, con el siguiente formato: ARTICULOS CON STOCK INFERIOR AL MINIMO    Art.     Descripción     Stock Disp.     Stock Mínimo    Diferencia                           xx       xxxxxxxxx           xxx                    xxx                  ­ xxx                             .                .                     .                         .                         . 8) Una facultad dispone de un archivo llamado INSCRIP.DAT, con la siguiente  información:

Programación II

Página: 13

­ Número de Legajo (6 dígitos) ­ Apellido y Nombre (string[30]) ­ Código de Materia (4 dígitos) Para cada alumno que se inscribió en una materia se generó un registro. Se ingresa por teclado el código de una materia y a continuación los resultados de los tres  exámenes parciales de los distintos alumnos que se inscribieron en esa materia. ­ Número de Legajo ­ Nota Primer Parcial ­ Nota Segundo Parcial ­ Nota Tercer Parcial El fin de los datos se indica con un número de legajo negativo. Se pide confeccionar un programa C para: a) Informar la cantidad de alumnos que no aprobaron ningún parcial. b) Informar los alumnos de promoción directa (nota ocho o más en los tres parciales) PROMOCION DIRECTA Nro. Legajo         Apellido y Nombre                                                xxxxxx            xxxxxxxxxxxxxxxxxx                                                    ...                              ..... c) Informar aquellos legajos ingresados por teclado que no figuran en el archivo de  inscripción en esa materia, con el siguiente formato: LEGAJOS INEXISTENTES EN INSCRIPCION                                                                   xxxxxx                                                                        .. Nota: Hay como máximo 50 alumnos inscriptos en cada materia. 9) Una empresa posee 14 almacenes y en cada uno tiene un máximo de 700 productos. Para ello dispone de un archivo, ALMAC.DAT, con la información de todos los productos  de todos los almacenes con el siguiente diseño de registro: ­ Código de almacén (string[4]) ­ Número de producto (1 a 5000) ­ Nombre del producto (string[30]) ­ Saldo Existente Un mismo producto puede encontrarse en distintos almacenes y el archivo se encuentra  ordenado por código de almacén. Se ingresa por teclado el código de un almacén y a continuación los movimientos de  ingreso y egreso de productos que corresponden al mismo. Puede haber diversas  operaciones por cada producto y se ingresan desordenadas. El fin se indica con una operación que tiene cantidad operada cero. Los datos que se  ingresan son los siguientes:

Programación II

Página: 14

­ Número de producto ­ Nombre del producto (string[30]) ­ Cantidad operada con signo (+ si es ingreso, ­ si es egreso) Los productos que no se encontraban previamente en el almacén, deben ser incorporados.  Por esa razón se ingresa el nombre del producto en cada registro. Realizar un programa C para: a) Informar la existencia final de los productos del almacén luego de la actualización, y  cuyo saldo ha quedado por debajo del promedio general del almacén procesado, con el  siguiente diseño: PRODUCTOS CON SALDO POR DEBAJO DEL PROMEDIO Número Producto        Nombre Producto       Saldo                                             xxx                xxxxxxxxxxxxxxx       xxx.xx                                               .                                ..                          .. b) Grabar en el archivo ALMAC2.DAT los saldos finales de todos los artículos en todos los  almacenes, ordenado por código de almacén y diseño idéntico a ALMAC.DAT. 10) Una empresa que comercializa un máximo de 500 artículos, dispone del archivo  STOCK.DAT', ordenado secuencialmente por número de artículo, donde cada registro  contiene: ­ Número de Artículo (5 dígitos no correlativos) ­ Unidades en Stock (entero) ­ Precio Unitario (float) Se dispone de un segundo archivo con las ventas realizadas en el año, llamado  ‘VENTAS.DAT' con la siguiente información por registro: ­ Número de Artículo (5 dígitos no correlativos) ­ Número de Cliente (1 a 300) ­ Mes de Venta (1 a 12) ­ Cantidad de Unidades Vendidas (entero) Estos registros se encuentran desordenados. Se pide determinar e informar: a) Un listado con los importes adquiridos por los clientes que compraron durante el año en  8 o más meses, ordenado en forma ascendente por número de cliente con el siguiente  formato: Cliente                   Ene      Feb       Mar      Abr       May    .....                            xxx                      xxx.xx  xxx.xx  xxx.xx  xxx.xx  xxx.xx  .....                            xxx                      xxx.xx  xxx.xx  xxx.xx  xxx.xx  xxx.xx  ..... b) Un listado, ordenado en forma ascendente por número de artículo, informando solamente  aquellos que han quedado al fin del proceso con saldo cero. Observación: Utilizar dos programas para generar los archivos 'STOCK.DAT' y  'VENTAS.DAT' para usar como datos de prueba. 11) Una municipalidad desea efectuar un control de la cobranza del Impuesto Municipal en  los 6 bimestres de un año.

Programación II

Página: 15

Existen 500 contribuyentes, numerados del 1 al 500. Se dispone del archivo 'IMPORT.DAT', ordenado por año­bimestre, con 30 registros,  conteniendo los importes de los impuestos de los últimos cinco años. Cada registro  contiene: ­ Año del Bimestre (1999 a 2003) ­ Bimestre (1 a 6) ­ Importe (float) Otro archivo, llamado 'CONTRI.DAT', ordenado secuencialmente por número de  contribuyente nos informa sobre cada pago efectuado. Cada registro contiene: ­ Número de Contribuyente (1 a 500) ­ Año del Impuesto ­ Bimestre Si el contribuyente no pago algún bimestre, entonces ese registro no existe en el archivo. Se pide confeccionar un programa para: a) Ingresar como primer dato por teclado el número de año a procesar (19xx/20xx). b) Informar las deudas de cada contribuyente, según el siguiente formato: DEUDAS REGISTRADAS EN EL AÑO: 19XX/20XX CONTRIBUYENTE   BIMESTRES: 1­2­3­4­5­6   IMPORTE ADEUDADO                     XXXX                                           X   X                 XXXX.XX                     XXXX                                        X   X   X              XXXX.XX Nota 1: Los pagos que no son del año ingresado por teclado se deben ignorar. Nota 2: Utilizar un programa para generar los archivos 'IMPOR.DAT' y 'CONTRI.DAT'  para usar como datos de prueba. 12) Se ha efectuado un torneo de golf, a 4 vueltas de 18 hoyos cada una. Participaron 100  jugadores, los cuales fueron codificados para su identificación. Existe un archivo llamado JUGADOR.DAT con la información de cada uno de ellos, cada  registro contiene: ­ Código de Jugador (string[3]) ­ Nombre y Apellido del jugador (string[30]) El archivo está ordenado por código de jugador. Para procesar los resultados finales, se ha grabado un segundo archivo llamado  HOYOS.DAT con registros con la siguiente información: ­ Código de Jugador (string[3]) ­ Número de Hoyo (1 a 18) ­ Cantidad de golpes (un número entero) Se informa la cantidad de golpes que necesitó un jugador para cumplir con cierto número de  hoyo. El archivo está desordenado. Los directores del torneo necesitan conocer, para cada uno de los 18 hoyos, cual fue el  jugador que empleó menor cantidad de golpes en la suma de las 4 vueltas. En caso que haya habido más de un jugador en esas condiciones, los directores necesitan  conocer a todos pues los jugadores deberán compartir el premio. Programación II

Página: 16

Se debe emitir un listado con el siguiente diseño: Número de Hoyo             Código Jugador        Nombre y Apellido                                     1                               xxx                  xxxxxxxxxxxxxxxx                                                                       xxx                  xxxxxxxxxxxxxxxx                                      2                               xxx                  xxxxxxxxxxxxxxxx                                                                       xxx                  xxxxxxxxxxxxxxxx                                       .                                 .                                  .                                      .                                 .                                  . Nota: puede ocurrir que algunos jugadores hayan abandonado el torneo sin completar las  cuatro vueltas, por lo que no se los tomará en cuenta para el listado solicitado.  13) Una empresa dispone de un archivo, “Legajos”, con un total de 400 registros, con los  datos de sus empleados, cada uno de los cuales tiene la siguiente información: ­ Número de legajo (5 dígitos no correlativos) ­ Apellido y Nombre (25 caracteres) ­ Antigüedad ­ Categoría (1 a 5) ­ Valor Horario Este archivo se encuentra desordenado. Se dispone de segundo archivo, “Horas”, con la información con las horas trabajadas por  los empleados durante el año anterior, cada registro contiene la siguiente información: ­ Número de legajo ­ Día ­ Mes ­ Cantidad de horas trabajadas Este archivo se encuentra desordenado. Hacer un programa que determine e informe: a) Un listado de lo que trabajó y ganó en el año en total cada uno de los empleados, con el  siguiente formato: Número de Legajo  Apellido y Nombre   Horas Anuales Trabajadas   Total Ingresos ($)    99999                     XXXXXXXXXXX                    9999                            99999,99 Este listado debe emitirse ordenado por Número de Legajo. b) Informar el número de categoría cuyos empleados hayan trabajado menos horas en total. c) Informar para cada empleado el día en que haya trabajado más horas para cada mes. Empleado: XXXXXXX Mes: Enero Día que trabajó más horas: XX Mes: Febrero Día que trabajó más horas: XX d) Informar el Legajo y Apellido/Nombre de cada uno de los empleados que hayan  registrado horas trabajadas durante 8 ó más meses en el año. (no importa si los meses son  correlativos

Programación II

Página: 17

14) La municipalidad dispone de un archivo, “Motos”, con los datos de las motos radicadas  en el partido. Son 500 registros cada uno de los cuales tiene la siguiente información: ­ Patente de la Moto (4 caracteres) ­ Apellido y Nombre del Titular (25 caracteres) ­ Origen de la moto (‘N’=Nacional, ‘I’=Importada) ­ Categoría (1 a 5) ­ Impuesto Mensual Este archivo se encuentra ordenado por patente de la moto. Se dispone de segundo archivo, “Pagos”, con la información de los impuestos del año  anterior pagados por los titulares de las motos. Cada registro contiene: ­ Patente de la Moto (4 caracteres) ­ Mes Pagado Este archivo se encuentra desordenado y sólo contiene información de aquellos meses que  fueron pagados. Si el titular no pagó algún mes, no existirá el registro en el archivo. Sugerencia: Este segundo archivo NO se debe cargar en memoria puesto que es demasiado  grande. Hacer un programa que determine e informe: a) Un listado del total recaudado por cada moto inscripta en el partido, con el siguiente  formato: Patente     Apellido y Nombre del Titular     Total Meses Pagados  Total  Recaudación ($)  XXXX              XXXXXXXXXXX                           99                            99999,99 b) Informar cada una de las patentes de motos que no hayan registrado pagos en ningún  mes. c) Informar la patente de la moto por la cual se haya recaudado más dinero. d) Informar la recaudación por categoría de motos.  Categoría                                       Recaudación ($) 1 9999,99 2 9999,99 15) Una empresa de aviación dispone de 100 vuelos semanales y desea sistematizar la  emisión de pasajes. Para ello cuenta con un archivo, ‘VUELOS.DAT’ con la siguiente  información de cada vuelo: ­ Nro. de vuelo (3 dígitos, arbitrario y no correlativo) ­ Cantidad de asientos libres en ese vuelo ­ Ciudad Origen (string[3]) ­ Ciudad Destino (string[3]) ­ Precio de un pasaje en ese vuelo Este archivo no viene ordenado. La empresa une un total de 20 ciudades diferentes. En los  vuelos se repiten las ciudades origen y destino. Existe un segundo archivo, ‘PEDIDOS.DAT’, con los pedidos realizados durante el día de  la fecha, cada registro contiene: ­ Número de pedido (4 dígitos) ­ Número de vuelo solicitado (3 dígitos, arbitrario y no correlativo) ­ Cantidad de asientos solicitados

Programación II

Página: 18

Teniendo en cuenta que sólo se aceptarán los pedidos si la cantidad de asientos disponibles  es mayor o igual a los asientos solicitados, se pide: a) Indicar cual fue la ciudad de destino más solicitada teniendo en cuenta  todos los pedidos. b) Informar el total recaudado por la venta de pasajes que hayan sido aceptados. c) Imprimir al finalizar del proceso un listado con el siguiente diseño:              Nro. de Vuelo       Cantidad Asientos Libres    Cantidad de asientos Rechazados                    999                             999                                     99                    999                             999                                     99 Este listado debe salir ordenado por número de vuelo, de menor a mayor. 16) Una empresa cuenta con un archivo, CLIENTES.DAT, con la siguiente información de  cada uno de sus 200 clientes: ­ Código de Cliente (string[3]) ­ Nombre y Apellido del Cliente (string[30]) ­ Número de Vendedor (1 a 5) ­ Antigüedad del Cliente Este archivo está ordenado por código de cliente. Cuenta con un segundo archivo, VENTAS.DAT, con la información de las ventas que se  realizaron durante el año anterior Cada registro contiene la siguiente información: ­ Nro. de Factura  ­ Código de Cliente (string[3]) ­ Código de Artículo Vendido (string[4]) ­ Importe de la Venta ­ Mes de la venta Puede haber más de un registro para el mismo cliente y artículo. Se pide a partir de estos datos, determinar e informar: a) Un listado con el siguiente formato: Código de Artículo               Importe Total Vendido                                              xxxx                                           9999,99                                                  .                                                   .                                                  .                                                   . Este listado deberá salir ordenado por código de artículo.  La empresa comercializa un total de 30 artículos, pero no todos pudieron haberse vendido  durante el año pasado. b) Un listado con el siguiente formato: Cód. del Cliente         Ap. y Nombre         Importe Total Vendido                                       xxxx                   xxxxxxxxxxx                         9999,99                                          .                                 .                                          .                                          .                                 .                                          . Este listado deberá salir ordenado de mayor a menor por importe total vendido.

Programación II

Página: 19

c) Los códigos de los clientes que realizaron compras durante 3 meses consecutivos. d) Generar un archivo con los totales vendidos por vendedor. Cada registro debe contener: ­ Número de Vendedor (1 a 5) ­ Total Recaudado ($) en el año en esa zona e) Generar un archivo con los totales vendidos por zona. Cada registro debe contener: ­ Número de Zona (1 a 5) ­ Total Recaudado ($) en el año en esa zona 17) Una pizzería dispone de un archivo “Pizza.dat” con las pizzas que comercializa con el  siguiente formato de registro: ­ Código de pizza (string[4]) ­ Descripción (string[20]) ­ Precio (float) En el archivo “Bebidas.dat” tiene grabado los siguientes datos de las bebidas que vende: ­ Código de bebida (1 a 30) ­ Descripción (string[30]) ­ Precio unitario (float) ­ Cantidad de unidad en stock (entero) ­ Stock mínimo El archivo está ordenado por código de bebida de menor a mayor. Al tomar el pedido, el mozo genera un ticket los siguientes datos: ­ Número de mozo (1 a 15) ­ Número de mesa (1 a 10) ­ Código de pizza ­ Cantidad de pizzas ­ Código de bebida ­ Cantidad de bebida ­ Número de ticket Se supone que cada pedido tiene un sólo tipo de pizza, y un sólo tipo de bebida. Confeccionar un programa C para: a) A partir de cada ticket, emitir por pantalla el importe del pedido, y grabar los datos del  ticket en un archivo “Ventas.dat”. b) Al final del día, informar para cada mozo y mesa el importe vendido. c) Al final del día, actualizar el archivo de bebidas, e informar las bebidas (código y  descripción) que hayan quedado con stock menor al stock mínimo. Nota punto a): Tener en cuenta que se pide el importe para un sólo ticket. Se puede grabar  el importe de cada ticket en el archivo, aunque no es imprescindible, ya que puede  calcularse. Se puede confeccionar un programa que termine cuando se ingrese algún valor  inexistente (ejemplo: nº de mozo igual a 0), o hacer un menú para resolver los 3 puntos. Nota puntos b) y c): Los datos de los puntos b) y c) deben calcularse al final del día, es  decir, una vez que se haya terminado de facturar los tickets. Se puede realizar el  procesamiento cada vez que se ingresa un ticket, o tomar los datos del archivo ventas.dat.  Se recomienda la segunda opción.   18) Una empresa con varias sucursales dispone de un archivo con la información con las  ventas realizadas a los clientes durante el año anterior. Cada registro contiene los siguientes campos:

Programación II

Página: 20

­ Número de Cliente (1 a 150) ­ Día en el que se efectuó la venta (1 a 31) ­ Mes en el que se efectuó la venta (1 a 12) ­ Código del Vendedor que efectuó la venta (4 dígitos no correlativos) ­ Importe de la venta Puede haber más de un registro para el mismo número de cliente, para el mismo día , para  el mismo mes, etc. Existe un segundo archivo con la información de los vendedores de la empresa. Cada  registro contiene los siguientes datos: ­ Código de Vendedor (4 dígitos no correlativos) ­ Sucursal donde trabaja el vendedor (1 a 10) Cada vendedor trabaja en una sola sucursal. Este archivo viene ordenado por código de  vendedor de mayor a menor. A partir de esta información se pide determinar e informar: a) Informar cual fue el bimestre del año en el que el total de pesos recaudados por las ventas  haya sido mayor. b) Informar para cada mes y para cada sucursal la venta individual de mayor importe y el  código del vendedor que la realizó. c) Teniendo en cuenta que cada vendedor obtiene un 5% de comisión sobre las ventas,  emitir un listado con las comisiones totales anuales por vendedor y por mes. Este listado debe salir ordenado de mayor a menor por código de vendedor y no se deben  informar aquellos vendedores que no obtuvieron comisión. d) Informar para cada sucursal cuantos vendedores distintos trabajan en cada una de ellas.                          Nro. de Sucursal                Cantidad Vendedores                                     1                                           5                                     2                                           1                                     .                                             .                                     .                                             . 19) Una empresa textil que realiza ventas mayoristas y a consumidor final, dispone de un  lote de registros con información de las 80 telas que fabrica y comercializa con el siguiente  formato: ­ Código de tela (1 a 80) ­ Descripción (string[30]) ­ Precio por metro cuadrado (float) ­ Cantidad de metros en stock (entero) ­ Cantidad de metros en stock mínimo (entero) El lote está desordenado. Por cada una de las ventas que realiza registra los siguientes datos ­ Día de la venta (1 a 31) ­ Código de tela (1 a 80) ­ Cantidad de metros vendida (entero) ­ Legajo del vendedor (string[3]) ­ Tipo de venta (M: mayorista; F: consumidor final) El lote está desordenado y termina con un código de tela inexistente.

Programación II

Página: 21

En otro lote tiene los datos de los vendedores: ­ Legajo del vendedor (string[3]) ­ Nombre (string[30]) La empresa tiene 15 vendedores. A partir de los datos de las ventas del último mes se pide confeccionar un programa C que  resuelva los siguientes puntos: a) Informar para cada día la cantidad de metros que se vendió de cada una de las telas, a  los clientes mayoristas y a los clientes consumidor final. b) Calcular e informar el importe total recaudado en todo el mes por la compras de los  clientes mayoristas y  por la de los clientes consumidor final. Los clientes mayoristas tienen  un descuento del 10%. c) Informar los nombres de los vendedores que vendieron más de 20 tipos distintos de  telas en todas las ventas que hicieron durante el mes. d) Informar las telas que quedaron con la cantidad de metros en stock por debajo del stock  mínimo. 20) Indicar los errores en el siguiente programa. Proponer la solución #include  #include <stdio.h> void cargar(struct articulo *); void buscar(char *, struct articulo *); void mostrar(struct articulo *); void main() { struct articulo xx[10]; char nart[4]; int pos; cargar(xx); printf("Ingrese el artículo a buscar: "); scanf("%s", nart); pos=buscar(nart,xx); printf("\nEl artículo ocupa la posición: %d", pos); mostrar(xx); } void cargar(struct articulo p) { int i; for(i=0;i<10;i++) { scanf("%s",p[i].nart); scanf("%f",p[i].pu); } }

Programación II

Página: 22

void buscar(char *vb, struct articulo *p) { int i; for(i=0;i<10;i++) if(strcmp(p[i].nart,vb)==0) return i; return ­1; } void mostrar(struct articulo *p) { int i; for(i=0;i<10;i++) { printf("%s",p[i].nart); printf("%f",p[i].pu); } } 21) Una facultad cuenta con los siguientes archivos: Un archivo con los datos de las correlatividades. Cada registro contiene: ­ Código de Materia (string[4]) ­ Código de Materia Correlativa (string[4]) Hay un registro por cada correlatividad. El archivo está ordenado por Código de Materia. Un archivo con las notas de los finales de los alumnos. Cada registro contiene: ­ Nro. de Legajo (4 dígitos, no correlativos) ­ Código de Materia (string[4]) ­ Nota (1 a 10, 1­3 = Desaprobado, 4­10 = Aprobado) Puede haber varios registros para el mismo legajo y para la misma materia. ( El alumno  pudo haber rendido la misma materia más de una vez) Un archivo con las solicitudes de inscripciones de los alumnos. Cada registro contiene: ­ Número de Legajo (4 dígitos, no correlativos) ­ Código de Materia a inscribirse (string[4]) Este lote finaliza con un registro con legajo igual a cero. Observaciones: a) La facultado tiene 50 alumnos, b) Se dictan solamente 20 materias, c)  Ningún alumno rinde la misma materia más de 3 veces, d) Cada materia tiene un máximo  de 5 correlativas, e) Hay materias sin correlativas. Se pide: Para cada solicitud de inscripción (lote 3) informar si se acepta o se rechaza. Si se  rechaza informar cantidad de materias correlativas adeudadas (no rendidas o no aprobadas).  Para ser aceptada una solicitud se deben tener todos los exámenes finales de las correlativas  aprobados. b) Los códigos de las materias que no tienen correlativas. a)

22) Los encargados de la organización de las olimpíadas disponen de un archivo donde  constan los atletas inscriptos para las competencias de atletismo. Cada registro contiene:

Programación II

Página: 23

­ Código de país (3 dígitos no correlativos) ­ Cantidad de atletas inscriptos (entero) Hay un registro por país. Participan un total de 120 países Para cada una de las competencias, disponen de un archivo donde se indica: ­ Número de competencia (1 a 20) ­ Categoría (‘F’ para femenina, ‘M’ para masculina) Además disponen de un archivo para cada uno de los atletas que participó en las  competencias realizadas, con el siguiente formato:  ­ Código de país ­ Número de competencia (1 a 20) ­ Tiempo (float) ­ Ubicación (entero) En el archivo pueden aparecer más de un registro para un mismo país y una misma carrera. Se pide determinar e informar: a) Un listado que indique para cada país, la cantidad de competencias ganadas en cada  categoría (‘F’ y ‘M’ por separado). b) El país de menor tiempo promedio en total entre todas las competencias. (El promedio  de tiempos para cada competencia surge de la suma de los tiempos individuales de cada uno  de los atletas, dividido la cantidad de atletas. Recuérdese que la división por cero es una  operación inválida.) c) El país que mayor cantidad de atletas inscribió para las competencias.  23) Un consorcio desea liquidar las expensas correspondientes al mes pasado. Dispone de  un archivo “Gastos.dat” con los gastos realizados durante ese mes con el siguiente formato: ­ Rubro (entero entre 1 y 10) ­ Monto gastado (float) En otro archivo, “Deuda.dat” tiene almacenado la deuda atrasada de cada uno de los 50  departamentos. Cada registro contiene: ­ Número de unidad (100 a 149) ­ Propietario (string [30]) ­ Deuda acumulada (float)  Cada departamento paga una parte proporcional de los gastos generales de acuerdo a la  superficie que tiene, en relación con la superficie total del edificio. Para obtener el monto de  los gastos generales, a los gastos realizados se le suma un 5% en concepto de gastos de  administración.  Dispone de un tercer archivo, “Area.dat”, donde guarda: ­ Número de unidad (100 a 149) ­ Superficie en metros cuadrados (float) Este archivo está ordenado por número de unidad. Confeccionar un programa C para: a) Determinar el rubro que mayor gasto ocasionó.

Programación II

Página: 24

b) Generar un archivo que almacene para cada uno de los departamentos los siguientes  datos:  ­ Número de unidad   ­ Propietario ­ Deuda acumulada  ­ Monto de las expensas del último mes. A la deuda acumulada se le aplica un 3% de interés si es menor a $ 500. Si es mayor, se le  aplica un 5% de interés. c) Emitir un listado ordenado de mayor a menor por deuda total (deuda acumulada más  monto de las expensas del último mes) con el siguiente formato Número de Unidad           Propietario            Deuda total 24) Una empresa que industrializa maceteros para plantas desea procesar los datos de los  pedidos de sus clientes del mes en curso. Para ello cuenta con un archivo llamado  “Artic.dat” que contiene los siguientes datos: ­ Código de Artículo (1 al 70) ­ Nombre (String[20]) ­ Kg. de Cemento necesarios para su producción (float) ­ Unidad mínima de fabricación (Entero. Indica cuanto se produce como mínimo) ­ Precio de Venta  ­ Stock Actual (Entero) Este archivo se encuentra ordenado por código de Artículo Luego cuenta con un archivo llamado “Pedidos.dat” que contiene los pedidos efectuados  por los clientes para los próximos 3 meses con la siguiente estructura ­ Día  ­ Mes ­ Año ­ Cliente (1 al 500) ­ Código de Artículo (1 al 70) ­ Cantidad (entero) El día, mes y año corresponden a la fecha de entrega requerida para la entrega de los  productos. Este archivo se encuentra ordenado por fecha de entrega requerida en forma  ascendente. Confeccionar un programa C que realice lo siguiente: a) Listado de importe de ventas por cliente con el siguiente formato: Cliente xxx Total 

Mes 1 xxxx xxxx

Mes 2 xxxx xxxx

Mes 3 xxxx xxxxx

b) Generar un archivo que contenga las ordenes de producción necesarias para elaborar los  productos pedidos. La estructura del nuevo archivo “Ordenes.dat” debe contener: ­ Número de Orden (entero) ­ Día ­ Mes ­ Año ­ Código de Artículo (1 al 70) ­ Cantidad a Producir (entero) ­ Kg de Cemento Necesarios (float) Programación II

Página: 25

Para cada artículo debe haber una orden de elaboración por mes como máximo. La fecha  corresponde a la fecha más temprana del mes en la que hay que realizar una entrega (primer  pedido que hay que entregar en el mes para ese artículo). Para calcular la cantidad a  producir hay que tener en cuenta el stock actual, la cantidad vendida y la cantidad mínima  de producción. (Ej. Si mi stock actual es 20, tengo 50 de pedidos y la cantidad mínima a  producir es 100, debo emitir una orden de elaboración por 100. Si en cambio mi stock  actual es 7, la cantidad pedida es 70 y la producción mínima es 40, debo producir 63.).  Mientras el stock disponible alcance, no se deben generar órdenes de elaboración. El  número de orden se debe generar como número de ubicación del registro en el archivo. c) Cantidad de Kg de cemento a comprar para cada mes.  25) Una municipalidad tiene un archivo de nombre “Pago.dat” de las tasas abonadas por los  contribuyentes durante el último mes. Los registros cuentan con los siguientes datos: ­ Número de contribuyente (string(6)) ­ Día de pago (1 a 31) ­ Código de lugar de pago (1 a 15) ­ Forma de pago  (‘C’: contado; ‘D’: débito automático) ­ Importe abonado En el archivo anterior no figuran los contribuyentes que no abonaron las tasas. Este archivo  está ordenado por número de contribuyente. Dispone además de otro archivo “Contribu.dat” con los datos de todos los contribuyentes  del partido con los siguientes datos: ­ Número de contribuyente (string(6)) ­ Nombre del contribuyente (string (30)) ­ Localidad (string (30)) ­ Categoría del contribuyente (‘R’: residencial; ‘C’: comercial; ‘I’: industrial) ­ Deuda acumulada (float) ­ Importe mensual de la tasa (float) En otro archivo se indica los lugares de pago, “Lugares.dat”: ­ Código de lugar de pago (1 a 15) ­ Lugar de pago. (string(30)) El código 1 identifica a la municipalidad, y del 2 al 15 pertenecen a los bancos que cobran  las tasas municipales. Los registros están ordenadamente de menor a mayor por código de  lugar de pago. Se desea: a) El porcentaje recaudado por cada categoría (R, C, I), en relación con el total recaudado b) Para cada día y cada lugar de pago, la recaudación obtenida por pago al contado y por  débito automático. c) Generar un archivo de nombre “Deudor.dat” con todos los contribuyentes deudores con  el siguiente formato: ­ Número de contribuyente ­ Deuda acumulada d) Un listado con todos los contribuyentes que registren deuda, ordenado de mayo a menor  por la deuda acumulada, con el siguiente formato: Código de contribuyente

Programación II

   Nombre     Localidad     Deuda acumulada 

Página: 26

Nota 1: La deuda acumulada para aquellos contribuyentes que no abonaron el último mes  será igual a la deuda que tenían más el importe mensual de la tasa. Observar que si el  contribuyente pagó el último mes, no se sabrá si es o no deudor hasta que no se analice el  archivo “Contribu.dat” (puede haber pagado ese mes, pero adeudar meses anteriores).  Además, puede darse el caso de que el contribuyente abone conjuntamente con el último  mes toda o parte de la deuda que tenía. Nota 2: Recordar que los archivos que se dan como dato pueden leerse cuantas veces sea  necesario. 26) Una institución sanitaria dispone de un archivo con los datos de los pacientes atendidos  en sus consultorios externos, ordenado alfabéticamente. ­ Apellido y nombre (string[30]) ­ Diagnóstico (carácter: A­F) ­ Fecha (día, mes, año) ­ Obra Social (‘S’ ó ‘N’, según disponga o no de cobertura) Hacer el diagrama y la correspondiente codificación C que permita: a) Leyendo el archivo formar un vector con todos los pacientes que fueron atendidos y  carecían de obra social. Usar funciones. b) Listar el vector obtenido informando Apellido y Nombre, ordenado alfabéticamente. c) Ingresar por teclado una fecha (día, mes año) y listar todos los pacientes que fueron  atendidos esa fecha. d) Ingresar por teclado un código de diagnóstico y formar un vector con los pacientes con  ese código y que tenían obra social, ordenado por apellido. e) Listar el vector anteriormente formado. 27) Una empresa cuenta con un archivo conteniendo los datos referidos a sus empleados,  cada registro corresponde a un empleado y la estructura se detalla a continuación. ­ Nombre (string[30]) ­ Sección (entero) ­ Categoría (entero) ­ Sueldo Básico (float) ­ Antigüedad (entero) ­ Documento (entero) ­ Sexo (carácter) ­ Estado Civil (‘S’ Soltero, ‘C’ Casado, ‘V’ Viudo, ‘D’ Divorciado) ­ Fecha de nacimiento Día Mes Año Realizar un diagrama y la codificación C para determinar: a) Imprimir un listado con los nombres de los empleados varones con categoría A,  indicando la sección a la que pertenece. b) Emitir un listado indicando nombre y apellido y día de nacimiento de los empleados que  nacieron en el mes de mayo. c) La empresa paga un complemento por antigüedad, que se calcula de la siguiente forma 3% del sueldo básico para antigüedad de 0 a 1 año           5% del sueldo básico para antigüedad de 2 a 3 años           10% del sueldo básico para antigüedad de 4 a 6 años           25% del sueldo básico para antigüedad de 7 a 10 años           30% del sueldo básico para antigüedad de más de 10 años           La antigüedad de un empleado en la empresa se informa en cantidad de años en el campo  respectivo. Programación II

Página: 27

Se quiere generar un archivo con un registro por empleado con la siguiente estructura: ­ Nombre ­ Sueldo Básico ­ Bonificación 28) La asociación de propietarios de caballos quiere realizar una estadística referente a los  150 potrillos nuevos que han sido anotados en la misma. Se dispone de un archivo con los  siguientes datos: ­ Número de ejemplar (entero) ­ Nombre (string [30]) ­ Edad ­ Padre ­ Nombre (string[30]) ­ Cantidad de carreras ganadas (entero) ­ Cantidad de carreras corridas (entero) ­ Madre ­ Nombre (string[30]) ­ Cantidad de carreras ganadas (entero) ­ Cantidad de carreras corridas (entero) Los datos del archivo no se encuentran ordenados. Realizar el diagrama y codificación para: a) Determinar el nombre del potrillo cuyo padre ganó mayor cantidad de carreras., b) Emitir un listado conteniendo toda la información de cada potrillo ordenado según el  número de ejemplar. c) Generar un archivo llamado ANTECEDENTE que sólo contenga los registros  correspondientes a los potrillos cuyas madres hayan corrido más de 5 carreras. 29) Dos sucursales bancarias tienen cada una un archivo, “Banco1.dat” y “Banco2.dat”,  compuestos por registros estructuras conteniendo: ­ Documento del cliente (string[8]) ­ Nombre del cliente (string[30]) ­ Número de cuenta (5 dígitos no correlativos) ­ Saldo ­ Crédito ( ‘S’, ‘N’ indicando si se le ha concedido crédito) Los archivos están ordenados por documento del cliente. Tener en cuenta que un mismo  cliente puede tener cuenta en ambos bancos. Escribir un programa que explore ambos archivos para: a) Generar un archivo con las personas de la primera sucursal que sólo tienen crédito en esa  sucursal y que no aparezcan en la segunda sucursal. El archivo debe estar ordenado por  nombre del cliente. b) Ingresar por teclado un importe y recorriendo ambos archivos listar aquellos cuyo saldo  sea inferior a ese importe. El listado saldrá ordenado por saldo de mayor a menor y  contendrá todos los datos. c) Ingresar los números de cuenta de aquellos clientes de las segunda sucursal que deben  eliminarse y formar así un nuevo archivo actualizado. 30) Un club contiene dos archivos, el primero con los datos de los socios con la siguiente  información.

Programación II

Página: 28

­ Número de Socio (5 dígitos no correlativos) ­ Nombre del Socio (string[30]) ­ Cobrador (string[6]) ­ Pagos (string[12]) El club tiene un máximo de 250 socios. El archivo está ordenado por número de socio El  campo Pagos contiene un 0 o un 1 por cada mes pagado o adeudado. Por ejemplo un valor  “110000000010” significa que el socio solamente tiene pagos los meses de Enero, Febrero  y Noviembre. El segundo archivo contiene los pagos efectuados durante la semana pasada. Cada registro  contiene: ­ Número de Socio (5 dígitos no correlativos) ­ Mes Pagado(1 a 12) Tener en cuenta que puede haber varios registros por socio ya que pudo haber abonado  distintos meses adeudados. Se pide: a) Generar un nuevo archivo con el diseño del primero pero con los datos del campo pagos  actualizados. b) Generar un listado con el siguiente diseño y ordenado por socio. Cuotas Impagas del año Socio 12323 12431 30531

Meses Impagos feb

mar

abr abr

may

jun

nov jul

dic

31) Una empresa tiene los siguientes archivos. Un primer archivo con los datos de los artículos, con este diseño: ­ Número de artículo (5 dígitos no correlativos) ­ Nombre del artículo (string [30]) ­ Precio unitario Este archivo no se encuentra ordenado y contiene 100 registros.  Se dispone un segundo archivo, con los datos de los vendedores. Cada registro tiene la  siguiente información: ­ Número de vendedor (1 a 300) ­ Número de provincia (1 a 25) Este archivo no se encuentra ordenado y contiene 300 registros. Finalmente se dispone un tercer archivo con las ventas de la empresa Cada registro tiene la  siguiente información: ­ Mes de la venta ­ Número de vendedor (1 a 300) ­ Número de artículo (7 dígitos) ­ Cantidad de unidades Este archivo no se encuentra ordenado.

Programación II

Página: 29

Desarrollar un programa para determinar e imprimir: a) Por cada mes procesado, la recaudación del mes discriminada y ordenada por provincia: MES: XXXX                    PROVINCIA      TOTAL RECAUDADO                        1             99999.99 b) Para cada mes, los números de los artículos que no tuvieron ventas. Mes: XXXX Artículos sin ventas ­ 

Número 

Nombre

XXXXX

XXXXXXXXXX

c) Los números de los vendedores inactivos por 6 o más meses consecutivos. VENDEDORES INACTIVOS                              

999

32) Dada la siguiente porción de código: struct z { int a;    struct z * b; }; int f (struct z * c, int d) { struct z *x, *y ,*v;    v=(struct z *) malloc(sizeof z);     if (v = = NULL)         return 0;    v­>a=d;    x= c;    y=NULL;    while ((x != NULL ) && (c­>a < d))       { y=c; x = x­>b;       }    if (x != NULL)        { v­>b = x;           x­>b = y;        } else        {        c = v;        v­>sig = NULL;         } return 1; }

Programación II

Página: 30

Darle un nombre representativo a la función, a la estructura y a los campos de la misma.  Indicar que hace la función. 33) Un banco debe procesar la información de sus clientes de tarjetas de créditos. Para ello  dispone de un primer registro con: ­ Porcentaje diario de interés (fija durante el mes) ­ Cantidad de días del mes en proceso (28 a 31) ­ Importe mensual de mantenimiento de la tarjeta Se dispone un archivo (máximo 500) con información del mes anterior, donde cada registro  tiene: ­ Número de tarjeta de crédito (12 dígitos) ­ Importe (saldo) pendiente del mes anterior El archivo está ordenado en forma creciente por número de tarjeta. Finalmente se dispone de un archivo con las operaciones que se hubieran realizado en el  mes (ordenado en forma creciente por número de tarjeta y día), con: ­ Número de tarjeta de crédito (12 dígitos) ­ Día de la operación (1 a 31) ­ Código de la operación (1=compra, 2=retiro en efectivo, 3=depósito) ­ Importe de la operación ­ Código del negocio que vendió (1 a 3000). Si se trata de retiro en efectivo o  depósito este campo es 0. Se pide un programa para determinar e informar: a) El resumen de operaciones de cada tarjeta de crédito con el siguiente formato:                   TARJETA NRO. 999999999999                      DIA

COD.  

              Saldo Inicial     

 IMPORTE     

 99999.99

                     1                          1                          .     

 1        99999.99  3     ­99999.99  .                             .

                     31    

1

 99999.99

              Intereses                     Mantenimiento

 99999.99  99999.99

             Saldo Final   

99999.99

b) Cual fue el código del negocio al que se le pagar  el menor importe. c) Al final del proceso informar que tarjetas de créditos no tuvieron operaciones en el mes:                    TARJETAS SIN OPERACIONES                          999999999999

Programación II

Página: 31

34) Una empresa con una cantidad máxima de 2500 artículos, prepara un archivo por cada  uno de los artículos con: ­ Número de Artículo (7 dígitos) ­ Cantidad de unidades en stock ­ Precio de venta por unidad ­ Número de proveedor A continuación se dispone otro archivo, uno por cada venta realizada con: ­ Número de cliente (1 a 999) ­ Fecha de venta (dd/mm/aa) ­ Número de artículo ­ Cantidad de unidades El lote no guarda ningún orden. Desarrollar un programa que determine e imprima al final del proceso: a) Para los clientes que como mínimo compraron en 3 de los 12 meses del año:                         VENTAS DEL MES    Nro. Cliente      1     ­    2    ­    3    ­    4   .....        999         9999.99    9999.99   9999.99   9999.99 Ordenado por número de cliente. b) Para los artículos con existencia nula o negativa:                 LISTADO DE ART. SIN EXISTENCIA         NRO. ARTICULO     EXISTENCIA        PROVEEDOR           9999999             0                9999                                                            1 c) Para los números de artículos erróneos (inexistentes):                  LISTADO DE ART. INEXISTENTES       NRO. ARTICULO     NRO. CLIENTE    CANT. NO VENDIDA          9999999            999               9999    La cantidad de artículos inexistentes en menor a 300. d) Determinar a que cliente y mes corresponde el máximo importe mensual de ventas.

Programación II

Página: 32

35) En una facultad desean tener información de los exámenes de ingreso para los  estudiantes femeninos y masculinos por separado en distintos archivos. Se sabe que no hay  más de 1300 inscriptos. Para ello poseen: Un archivo ordenado por legajo en forma creciente, en el que cada registro tiene la  siguiente información: ­ Legajo del alumno (5 caracteres) ­ Apellido y Nombre del alumno (40 caracteres) ­ Sexo ('F', 'M') Un archivo con las calificaciones del examen de ingreso, en el que cada registro contiene: ­ Legajo del alumno (5 caracteres) ­ Nota del examen Este archivo se encuentra desordenado y tiene información sólo de los alumnos que  rindieron el examen. La facultad desea generar dos archivos, uno con la  información de los estudiantes  masculinos y otro con los femeninos, cuyos registros estén formados por: ­ Legajo del alumno (5 caracteres) ­ Apellido y nombre del alumno (40 caracteres) ­ Información sobre si rindió o no el examen  (string 'rindió' o string 'no rindió') ­ Nota del examen Para aquellos estudiantes que no rindieron el examen grabar en la nota: ­1. Estos archivos  deben estar ordenados por legajo del alumno en forma creciente. Además desean saber el promedio de las notas de las mujeres, el promedio de las notas de  los hombres y el promedio de todos los alumnos. Dichos promedios deben calcularse sin los  ausentes. Construya un programa que genere los dos archivos mencionados y que emita los  promedios solicitados. 36) Un laboratorio dispone para la elaboración de todos sus productos de 1750  componentes. El laboratorio tiene registrados 80 productos, pero en la actualidad sólo  fabrica algunos. Toda la información sobre productos y componentes se halla contenida en  3 archivos binarios. El primer archivo contiene:  Código de Componente (string[5]) ­ Precio por miligramo El segundo archivo contiene: ­ Número de producto (1 a 80) ­ Código de Componente (string[5]) ­ Cantidad. de mg. necesarios Tener en cuenta que en este archivo, por cada producto habrá tantos registros como  componentes tenga el mismo. La información de este archivo corresponde a los productos  que se fabrican actualmente. Un tercer archivo contiene: ­ Número de producto (1 a 80) ­ Nombre del producto (string[25]) ­ Código de presentación (1=comprimidos, 2=jarabe, 3=inyectable)

Programación II

Página: 33

Este archivo está desordenado y tiene 80 registros. Contando con estos datos se desea  obtener un archivo binario que contenga y sólo para los productos que se fabrican, los  siguientes campos: ­ Número de producto (1 a 80) ­ Nombre del producto (string[25]) ­ Precio Además se pide informar el costo promedio de los productos en sus distintas  presentaciones. Es decir promedio de los comprimidos, jarabes e inyectables. Se asegura  que se fabrica por los menos uno de cada presentación. 37) Un supermercado dispone de los siguientes archivos: Un primer archivo con el horario que cumplió cada cajero y en que caja trabajó. Cada  registro contiene: ­ Número de Caja (1 a 5) ­ Código de cajero (string[3]) ­ Hora de entrada (entero 8 a 22) ­ Hora de salida (entero 8 a 22) Este archivo está desordenado y un mismo cajero puede tener varios registros si trabaja en  forma discontinua. Un segundo archivo con la información de los 8 cajeros que trabajan en el supermercado.  Cada registro contiene:  ­ Código de cajero (string[3]) ­ Nombre y Apellido (string[30]) Este archivo está desordenado. Un tercer archivo con la información de las ventas efectuadas el día anterior. Cada registro  contiene: ­ Número de caja (1 a 5) ­ Importe Total de la venta ­ Hora de entrada a la caja (entero) ­ Minuto de entrada a la caja (entero)  ­ Hora de salida de la caja (entero) ­ Minuto de salida de la caja (entero)  Se pide determinar e informar: a) El total recaudado por cada cajero, informando solamente aquellos que en el día anterior  hayan trabajado. b) El código del cajero que haya tenido mayor cantidad de minutos libres, sin tener en  cuenta los cajeros que no hayan trabajado el día anterior. c) El Nombre y Apellido del cajero que haya efectuado la venta individual de mayor  importe. 38) Un banco dispone de los siguientes archivos: Un primer archivo contiene los datos de las cajas de ahorro, cada registro contiene: ­ Nro. de caja de ahorro (7 dígitos no correlativos) ­ Saldo de la cuenta Este archivo se encuentra desordenado y hay como máximo 300 cajas de ahorro. Programación II

Página: 34

Un segundo archivo con los movimientos, extracciones y depósitos. Cada registro contiene: ­ Mes del movimiento ­ Número de caja de ahorro (7 dígitos no correlativos) ­ Código de operación (1=extracción, 2=depósito) ­ Importe del movimiento Este archivo se encuentra ordenado por mes. Desarrollar un programa para determinar e informar: a) Para cada mes procesado el siguiente listado ordenado en forma decreciente por saldo: Cuentas nuevas del mes XX Nro. de Cuenta      9999999

Saldo 999,99

b) Un listado ordenado por número de cuenta con el siguiente formato: Saldos a fin de mes Nro. Cuenta 1 2 3 4            ................ 9999999          9999,99          9999,99               9999,99            9999,99 c) Por cada mes procesado: CUENTAS SIN MOVIMIENTOS EN EL MES XX Nro. Cuenta             9999999

Saldo 9999,99

d) Por cada mes procesado:  TOTAL MOVIMIENTOS DEL MES XX Nro. Cuenta   Saldo Anterior   Total Depósitos   Total Extracción   Saldo Actual 9999999         9999,99              9999,99              9999,99                  9999,99 e) Al final del proceso, en que mes y a que cliente correspondió la máxima entracción. f) Al final del proceso los números de cuenta sin movimientos en los últimos 6 meses (con  6 o más meses de antigüedad)

Programación II

Página: 35

Related Documents