Tecnología

Inicio

Cómo hacer de entrada Sólo un número entero en C ++

Forzando la entrada en un programa en C ++ que ser un número entero es útil cuando se está solicitando una persona que introduzca un número, como su edad, y que desea ignorar entrada no válida, como "$ 2", "18.5" o "no". No hay una forma sencilla para restringir la entrada a un tipo específico, como las funciones de E / S normalmente procesan de entrada simplemente como un carácter o una cadena. Para forzar la entrada de enteros, bucle de forma manual a través de la entrada y comprobar que cada personaje es un número entero válido.

Instrucciones

1 Abra el archivo de C ++ en un editor como Microsoft Visual Studio Express.

2 Incluir las librerías necesarias para acceder a las funciones añadiendo el siguiente código en la parte superior de su archivo:

incluir <ctype.h> // isdigitinclude <stdlib.h> // atoiinclude <string.h> // strleninclude <stdio.h> // printf, fgets, la entrada estándar, BUFSIZ

3 Declarar las variables necesarias para ingresar un entero añadiendo el siguiente código en la parte superior de su función:

int número;

n sin firmar;

charlas buffer [BUFSIZ];

found_nondigit bool, válida;

4 Pedir al usuario que introduzca un número entero. Compruebe si se trata de una entrada válida y, si no, seguir pidiendo entrada hasta que el usuario introduce solamente un entero añadiendo el siguiente código:

válido = false;

while (! válido) {

printf ( "Introduzca un número entero:");

if (fgets (tampón, tampón sizeof, la entrada estándar)! = NULL) {

buffer [strlen (tampón) -1] = '\ 0';

found_nondigit = false;

si (strlen (buffer) == 0)

found_nondigit = true;

para (n = 0; n <strlen (buffer); n ++)

if (! isdigit (buffer [n]))

found_nondigit = true;

si (found_nondigit!) {

Number = atoi (tampón);

printf ( "% d \ n", número);

válido = true;

}

más

printf ( "Error: no válido de entrada \ n");

}

}

De entrada como "5f", "x 6" y "8.4" se detectan como entrada válida. El "para" controles de bucle si cada carácter introducido es un número del 0 al 9. El "si (strlen (buffer) == 0)" verificación en línea si el usuario pulsa la tecla "Enter" sin ingresar ninguna entrada. La función "atoi" convierte la entrada a un entero, una vez que haya sido validada.

5 Guarde el archivo de C ++, compilar y ejecutar el programa para recoger entero de entrada por parte del usuario.