Yo implementé una mínima validación para un programa chorra que hice de la siguiente forma (muy muy esquematizado):
// Declaras una cadena donde se almacenará el número
char numero[50];
// Utilizas un bucle que lea el supuesto número mientras no sea válido, por ej:
do
{
gets(numeroA);
fflush(stdin); // Vacía el buffer del teclado (evita algunos problemas de lectura)
} while (!esNumNatural(numero));
// Lo que está dentro del while es una función que recibe la cadena y devuelve true si es un número natural. Te pego la función:
Código C++:
Ver originalbool esNumNatural (char *entrada)
{
bool esCorrecto = true;
if (strlen (entrada
) != 0) // Comprueba que la cadena no esté vacía {
for (unsigned int i
= 0; i
< strlen (entrada
); i
++) // Recorre la cadena, celda por celda {
if(!isdigit (entrada
[i
])) // Si el contenido de la celda no es un digito, esCorrecto pasa a valer falso esCorrecto = false;
}
}
else
esCorrecto = false;
if (atoi(entrada
) == 0) // No se considera natural el número cero esCorrecto = false;
return esCorrecto;
}
Creo que jugando con estas pautas (tus números son en coma flotante, así que tienes que controlar esto) puedes conseguir algo útil.
Hasta luego.