Logo Studenta

PROBLEMAS PARCIAL 2

¡Estudia con miles de materiales!

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).

Continuar navegando