Está en la página 1de 3

Universidad Tecnológica Nacional Informática I - R1041

Facultad Regional Buenos Aires 11 de Julio de 2022


Departamento de Ingeniería Electrónica 1º Parcial

Normas Generales
Lea detenidamente cada enunciado y consulte las dudas de interpretación que pudiesen surgir.

Parte Práctica

1) Realizar una función que arme una trama de datos para enviar por un puerto de comunicaciones.
Para ello, deberá armar un vector de 20 elementos del tipo unsigned short int a partir de un vector
de 18 enteros y un entero con el identificador del dispositivo.
Prototipo de la función:
int armar_trama (int dev_id, int * datos, unsigned short int * trama);

El retorno de la función corresponderá a OK o ERROR, dependiendo si pudo o no armar la trama.


El error se producirá si los valores recibidos no están dentro del rango permitido.
Armado de la trama:
● En el primer elemento deberá escribir el código 100 en los tres bits más significativos,
luego 8 bits con la combinación 00111100 y los 5 bits de menor peso con el valor recibido y
que corresponde al identificador del dispositivo (es un número entre 0 y 31).
● Luego seguirán 20 elementos donde los primeros tres bits serán 101, los últimos tres bits
serán 101 y los 10 del medio corresponden al valor del elemento correspondiente del
vector recibido. Un número entre 0 y 1023.
● El último elemento deberá contener el código 110, luego 8 bits con la combinación
11000011 y los últimos 5 bits con el número del equipo.
● La cantidad de “22” correspondiente a la cantidad de elementos del vector y la de “20”
correspondiente a la cantidad de datos, no deberán estar escrita en el código
(“harcodeada”), sino que se deberán definir como constantes simbólicas.

Ejemplo
Elemento inicial. Id del dispositivo: 23 (en binario: 0000 0000 0000 0000 0000 0000 0001 0111)

1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1

Elemento de datos. Dato: 754 (en binario: 0000 0000 0000 0000 0000 0010 1111 0010)

1 0 1 1 0 1 1 1 1 0 0 1 0 1 0 1

Elemento final. Id del dispositivo: 23 (en binario: 0000 0000 0000 0000 0000 0000 0001 0111)

1 1 0 1 1 0 0 0 0 1 1 1 0 1 1 1

Página 1 de 3
Universidad Tecnológica Nacional Informática I - R1041
Facultad Regional Buenos Aires 11 de Julio de 2022
Departamento de Ingeniería Electrónica 1º Parcial

2) Realizar un programa que reciba tres argumentos de main. El primero deberá ser el argumento -D
o -I (tanto en mayúscula como en minúscula). El segundo y el tercero serán dos números enteros.
El segundo valor deberá ser mayor al primero.
Luego deberá calcular 8 valores equidistantes entre ambos extremos.
Si el parámetro recibido es ‘D’ deberá completar un vector con los 10 valores.
Si el parámetro recibido es ‘I’ deberá completar un vector con la inversa de los 10 valores.
Luego de completado el vector, deberá mostrarlo por pantalla.
Se sugiere la implementación de funciones para el cálculo de los valores intermedios.
Realice todas las verificaciones correspondientes al ingreso de los argumentos de main.

3) Realizar una función para desencriptar un mensaje cifrado. La función recibirá un string del cual
realizará una resta de los primeros 5 caracteres con la palabra “-KEY-”. Luego se hará el promedio
de los 5 valores obtenidos y se extraerá su parte entera. Ese valor se utilizará como clave para
restar al resto del string. El string obtenido será almacenado en el segundo vector que recibió la
función. Considerar que el vector tiene el tamaño suficiente para almacenar el resultado.
Prototipo de la función:
void desencriptar (const char * origen, char * destino);

Considerar que si el valor obtenido es mayor a 127 deberá corregirlo sumandolé el exceso al
código ASCII del espacio (32).

Ejemplo
string recibido:

C l a v 3 r 2 7 / 8 h 2 h [ y x | y r

Obtención de la clave:
Patrón - K E Y -

Ascii Patrón 45 75 69 89 45

Recibido C l a v 3

Ascii recibido 67 108 97 118 51

Diferencias 22 33 28 29 6

Promedio 23,6

Entero 23

Página 2 de 3
Universidad Tecnológica Nacional Informática I - R1041
Facultad Regional Buenos Aires 11 de Julio de 2022
Departamento de Ingeniería Electrónica 1º Parcial

Desencriptación:
Mensaje r 2 7 / 8 h 2 h [ y x | y r

Ascii mensaje 114 50 55 47 56 104 50 104 91 121 120 124 121 114

Ascii + Clave 137 73 78 70 79 127 73 127 114 144 143 147 144 137

Ascii Corregido 42 73 78 70 79 32 73 32 114 49 48 52 49 42

Mensaje final * I N F O I r 1 0 4 1 *

Página 3 de 3

También podría gustarte