[ Foro de C ]
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.)