Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
1 EJERCICIOS SEGUNDO PARCIAL 1-) En una fábrica se desea chequear la eficiencia de 16 robots. Para ello se ingresa la cantidad de tiempo (entre 0 y 500 seg) que empleó en el armado de cada artículo, durante un día. Los datos ingresan por los ports 0X300 (menos significativo) y 0x301 (más significativo). Se han tomado en total 800 mediciones. Los datos son considerados válidos cuando el bit de sincronismo (S) pasa de 0 a 1. TIEMPO (9 BITS) ROBOT (4 BITS) S Se pide almacenar los datos necesarios en un vector de estructuras que permitan: a) Calcular el promedio de tiempo por Robot. b) Generar un vector de punteros al vector de estructuras. c) Ordenar el vector de estructuras utilizando la MACRO ORDEN que ordena de mayor a menor por cantidad de artículos. d) Utilizar una FUNCIÓN CON PUNTEROS para mostrar el robot que obtuvo el promedio de tiempo MÁS BAJO. 2-) Se realiza un estudio climático en 32 ciudades a lo largo del país. Para ello se cuenta con una placa de datos que toma todas las mediciones y las informa de la siguiente manera: Los datos son validos cada vez que el bit de sincronismo pasa de 0 a 1. El programa finaliza cuando el bit F toma el valor 1. Se pide realizar un programa que: a) Al iniciar solicite los nombres de las 32 ciudades. b) Luego de la carga procese los datos leyendo los ports correspondientes c) Al finalizar la lectura de los ports informar: a. El nombre de la ciudad donde se produjo la mayor temperatura b. Un listado ordenado de mayor a menor del promedio de lluvias por ciudad indicando el nombre de las ciudades. c. La humedad promedio medida (en cualquier ciudad) Para buscar el máximo utilizar una función que haga la busqueda por medio de punteros y realizar la lectura de ports por medio de una macro. 3-) Una fábrica de cerámica desea organizar una lista de precios de sus productos. Se sabe que como máximo hay 50 modelos distintos de cerámica. Para ello inicialmente se deberá cargar una base de datos con los siguientes datos: código producto (entero entre 100 y 200), descripción (string de 20 caracteres), precio por metros cuadrado (float) y cantidad de metros en stock (float) Luego por cada consulta de precios que se realice por los puertos 0x300 y 0x301 vendrán datos con la siguiente estructura. Los datos serán válidos cuando el bit S cambie de 0 a 1. S PARAMETRO COD. CIUDAD 0x300 0x301 VALOR F 00: Temp. 01: Lluvias 10: Humedad 11: Presión 2 La consulta finaliza cuando en el bit más significativo se encuentre un cero. Se solicita: a-) Realizar la carga de la base de datos. Utilizar función con notación de punteros. b-) Luego realizar la consulta de precios según código de producto. La función búsqueda retorna la dirección correspondiente del código de producto consultado. c-) Una vez finalizada la consulta se debe imprimir un listado ordenado por cantidad de consultas según los productos de mayor a menor, para esto utilizar una macro que ordene un vector de punteros. 4-) Una fábrica controla la producción de sus operarios mediante uN sistema informático. Para ello el sistema se inicia con la carga de los datos del operario (nombre (string de 20 caracteres), número de legajo (entero entre 0 y 500) y antigüedad (entero). La empresa cuenta con un total de 50 empleados. Cada vez que un operario finaliza una de las 20 piezas posibles por los puertos 0x300 y 0x301 SE ingresa los siguientes datos: O O O O O O O O O P P P P P S F 0x301 0x300 Los datos serán validos cada vez que exista una transición de 0 a I del bit de sincronismo. Cuando el bit de fin se active se finalizará la carga. Se pide: a) Cargar los datos de los operarios en un vector de estructuras, mediante una función con notación de punteros. b-) Determine la cantidad de piezas fabricadas por operario, según la lectura de los puertos. Utilizar una Macro para leer los puertos. c-) Imprimir un listado ordenado alfabéticamente de los empleados indicando la cantidad total de piezas fabricadas por cada uno. Para esto utiliza una Macro que ordene un vector de punteros. d-) Indicar cuál fue la pieza más fabricada en total por todos los empleados. Para el cálculo utilizar una función que reciba una dirección y la cantidad de elementos y devuelva un puntero a la pieza mas fabricada. e-) Informar la diferencia de piezas fabricadas entre el operario de mayor antigüedad y el de menor (ambos valores se consideran únicos) 5-) Se realiza una base de datos en la universidad. Para ello se deben cargar Nombre (stirng de 20 caracteres), legajo (int), sexo (char), carrera (número de 0 a 3). Todas las carreras constan de 30 materias. Una vez cargada la base inicial llegarán por el puerto 0x300 y 0x301 los datos del siguiente modo: S N° CARRERA LEGAJO 0x300 0x301 NOTA Fin Código Producto S 0x301 0x300 3 Los datos son validos cada vez que el bit de sincronismo pasa de 0 a 1. El programa finaliza cuando se ingresa el legajo 0. Se pide realizar un programa que: a. Al iniciar solicite la carga de 200 alumnos para la base de datos. Macro con notacion de punteros. b. Luego de la carga procese los datos leyendo los ports correspondientes (si ingresa un legajo inexistente desestimar la lectura y continuar) c. Al finalizar la lectura de los ports informar: c.1 Un listado alfabético de los alumnos informando cantidad de materias aprobadas (nota > 4) c.2 Mejor promedio c.3 Promedio de cantidad de materias aprobadas por todos los alumnos Para buscar el mejor promedio realizar una función que utilice punteros con el fin de encontrarlo Realizar la lectura de ports por medio de una macro. 6-) Se desea realizar el control de un acto eleccionario. Para ello se cuenta con un programa en el cual se cargan los datos de los 16 distritos eleccionarios (codificados de 0 a 15) y los 8 partidos participantes (codificados de 0 a 7). Una vez cargada la base los resultados de las distintas mesas llegarán a una computadora por medio de los puertos 0x300 y 0x301. El formato del mensaje será el siguiente: Se considerará dato valido cada vez que exista un cambio de 0 a 1 en el bit S. Los datos finalizan cuando de ingresar cuando se ingresa una mesa 0. Al finalizar la carga de datos se emite un listado con los resultados generales informando partido, cantidad de votos en forma decreciente y el programa da la posibilidad de realizar consultas de resultados por distrito (ingresando el nombre del mismo) finalizando al ingresar un distrito “FIN” a) Se pide realizar un programa que realice lo anteriormente descripto. b) En la seccion de busqueda de no encontrar el nombre imprimir una leyenda que lo indique. 7-) Se realizo pruebas de testeo en la producción de contenedores industriales. Se conoce que hay 200 modelos distintos de contenedores (identificados por un número entre 1 y 200) y sus respectivos nombres de fabricantes (50 caracteres). La adquisición de datos se realiza por los puertos 0x300 y 0x301. Los datos serán válidos cuando el bit S cambie de 0 a 1. S MESA DIST PART. CANT. VOTOS 0x301 0x300 Nro. de Modelo Testeo NO usado S 0x301 0x300 4 La información contenida en Testeo puede ser: 1- RECHAZADO / SCRAP 2 -RETRABAJO / REPRARACION 4- ACEPTADO 7- FIN DEL TESTEO Se solicita: a-) Cargar en memoria los nombres de los fabricantes según modelo b-) Cuando el testeo da como resultado RECHAZADO, grabar el Nombre del fabricante en el archivo de texto “DEVOLUCION”.c-) Indicar el porcentaje de cantidad de productos ACEPTADOS Y EN REPARACION por modelo. Para el cálculo del porcentaje utilizar una función con notación de punteros. d-) Informar un listado ordenado en forma decreciente por porcentaje de ACEPTADOS, indicando: NRO. MODELO PORCENTAJE DE ACEPTADOS PORCENTAJE EN REPARACION Para el ordenamiento utilizar una macro y vector de punteros. 8-) Se desea realizar un sistema que permita registrar la cantidad de personas que utilizan el subte en una estación. La misma cuenta con 8 molinetes numerados del 0 al 7. Cada vez que una persona pasa por uno de los molinetes se recibe la información por los puertos 0x400 y 0x401 F H H H H H M M M S 0x401 0x400Donde el bit menos significativo del puerto 0x400 es el bit de sincronismo. Luego hay tres bits que indican el número de molinete por el cual ha pasado la persona. El en puerto 0x401 hay 5 bits que indica la hora en la cual la persona pasa por el molinete (número entero de 0 a 23). Mientras que el bit más significativo de dicho puerto se utiliza para detectar el fin de datos. Consideraciones: • El dato se considera válido cuando el bit de sincronismo pasa de 0 a 1 • El proceso termina cuando el bit más significativo del puerto 0x401 se ponga en 1. Realizar un programa que permita 1. Determinar la hora del día que tuvo mayor cantidad de pasajeros en total. 2. Muestre un listado de la cantidad de personas que pasaron por cada molinete ordenado de mayor a menor por cantidad de pasajeros. (para ordenar utilizar una macro que reciba un vector de punteros). El listado debe contener número de molinete y cantidad de personas. 9-) Se tiene una placa adquisidora de datos que mide la temperatura de 16 salas en un edificio. Al inicio del programa se deben cargar los nombres de las mismas. La placa informa los valores a través de los puertos 400h y 401h con el siguiente formato: F S Temperatura N° Sala Port 400h Port 401h 5 Las mediciones son válidas cuando el bit S pasa de 1 a 0. Las mediciones finalizan cuando bit F toma valor 1. Al finalizar las mediciones se solicita: a) imprimir un listado con los nombres de las habitaciones y el promedio de temperatura en las mismas ordenadas de mayor a menor. b) Indicar la sala y la hora en que se produjeron la menor temperatura y la mayor temperatura. Para la lectura del puerto se debe utilizar una Macro que reciba un entero y cargue allí la lectura de ambos puertos. 10-) En una experiencia de laboratorio se cuenta con 8 aparatos que envían mediciones de una magnitud. Por cada medición se ingresa: la magnitud (9 bits), el número de aparato (3bits), sincronismo (1 bit). Las mediciones ingresan por los ports 0X200 (menos significativo) y 0X201 (más significativo). Se recogen 200 datos. Los datos son considerados válidos cuando el bit de sincronismo pasa de 1 a 0. En ese caso se debe enviar el número 11001010 por el port 0X 400. Magnitud Numero de aparato S Hacer un programa en C que muestre: a.)Promedio de medición por aparato. b.)Máxima medición de todo el lote y qué aparato la produjo. c.) Ordenar de menor a mayor por cantidad de mediciones utilizando una macro con vector de punteros. Indicando: Nro. de aparato – Cantidad de mediciones – Promedio d.) Informar lo ordenado, mediante una función. 11-) Una empresa chequea las horas de trabajo de sus 16 empleados según el siguiente diseño. PORT 0X401 PORT 0X 400 SYNC FIN EMPLEADO 4 BITS HORA DE ENTRADA 5 BITS HORA DE SALIDA 5 BITS Para ello se reciben datos por medio de los puertos 0X400 y 0X401. Un nuevo dato es válido cuando el bit de sincronismo (SYNC) cambia de 0 a 1, considerando que está en 0 al inicio del procesamiento. La entrada finaliza cuando el BIT DE FIN sea igual a 1. Se deben chequear que la HORA DE ENTRADA sea MENOR a la HORA DE SALIDA, caso contrario se deben contar los errores. Si un empleado estuvo ausente, se ingresa 0 y 0. Las horas se ingresan de 0 a 24 y son siempre enteros. Se pide: A. Generar un vector de punteros al vector de estructuras. B. Calcular el Promedio de horas totales trabajadas por cada empleado (función). C. Mostrar los promedios y su correspondiente empleado. D. Ordenar el vector de estructuras por Promedio de mayor a menor utilizando punteros (macro).
Compartir