[ Foro de C ]

Prueba de C

15-Dec-2021 15:40
Invitado (Alumno desesperado)
0 Respuestas

Debemos procesar un string que contiene números en hexadecimal de 3 dígitos, separados por uno o más espacios, - o /

unsigned char bytes[200]

(Tiene 200 bytes cómo máximo)

char bytes[] = "0A3 Y*  C19-/-123//05B - FFF/0FF";


Hacer una función darvalores:

err = darvalores(bytes, valores, &cant_validos);

que coloque en valores[] (un vector de int) los valores presentes en el string ("bytes")

Devuelve cantidad de errores (err) y en cant_validos la cantidad de números extraídos del string.

Ej.

Si

int valores = [100];
int cant_v = 0;
int err = 0;
char bytes[] = "0A3 Y*  C19-/-123//05B - FFF/0FF";


luego de hacer:

err = darvalores(bytes, valores, &cant_validos);

valores contiene {163, 3097, 291, 91, 4095, 255}
y cant_validos contiene 6


Hacer una segunda función normalizar que reemplace cada elemento mayor a 3800 por 3800, y cada elemento menor a 100 por 100

si valores contiene {163, 3097, 291, 91, 4095, 255}

luego de:

normalizar(valores, &cant_procesados);

valores contiene {163, 3097, 291, 100, 300, 255}

err devuelve la cantidad de valores del vector a los que se aplicó la "normalización" .




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)