El problema que estás experimentando puede deberse a varias razones, especialmente al entorno en el que se está ejecutando tu código. Aquí hay algunas consideraciones y posibles soluciones:
1. Verificación de la función `atof`
La función
`atof` convierte una cadena a un número de punto flotante. Si la cadena no es válida, puede devolver 0.0, lo que podría causar problemas si no se maneja adecuadamente. Asegúrate de que la cadena que estás pasando a
`atof` sea válida.
2. Verificación de rango
El rango que estás verificando (
`aux >= 0 && aux <= 25`) es correcto, pero asegúrate de que
`aux` realmente contenga un valor válido. Puedes agregar un chequeo adicional para ver si
`aux` es un número válido:
3. Uso de `clrscr` y `getch`
Las funciones
`clrscr` y
`getch` son específicas de ciertos compiladores y pueden no estar disponibles o comportarse de manera diferente en otros entornos. Asegúrate de que estas funciones sean compatibles con el entorno de tu dispositivo.
4. Revisar el tamaño del arreglo `str`
El tamaño del arreglo
`str` es 6, lo cual es suficiente para almacenar "0.50" y el carácter nulo. Sin embargo, asegúrate de que no haya desbordamientos en otras partes del código.
5. Código modificado
Aquí tienes una versión ligeramente modificada de tu código con algunas verificaciones adicionales:
6. Depuración
Si el programa sigue fallando, intenta agregar más mensajes de depuración para ver el valor de
`aux` antes de la verificación del rango. Esto te ayudará a identificar si el problema está en la conversión de la cadena o en la lógica posterior.
7. Entorno de ejecución
Dado que mencionas que el programa funciona en una PC pero falla en el dispositivo
hanheld, asegúrate de que el entorno de ejecución (compilador, sistema operativo, etc.) sea compatible y que no haya diferencias en la configuración que puedan estar causando el problema.
¡Buena suerte, Felmolpa!