Cómo hacer que la entrada sea sólo un entero en C++

Escrito por sean mann | Traducido por beatriz sánchez
  • Comparte
  • Twittea
  • Comparte
  • Pin
  • E-mail
Cómo hacer que la entrada sea sólo un entero en C++
Comprueba que el usuario ha introducido un entero. (Medioimages/Photodisc/Photodisc/Getty Images)

Forzar que una entrada en un programa C++ sea un entero es útil cuando pides a una persona que introduzca un número, como su edad, y quieres ignorar las entradas no válidas, como "$2", "18.5" o "no". No hay una forma sencilla de restringir la entrada a un tipo específico, ya que las funciones de entrada y salida suelen procesar la entrada simplemente como un carácter o una cadena. Para forzar la entrada de un entero, itera manualmente por la entrada y comprueba que cada carácter es un entero válido.

Nivel de dificultad:
Moderado

Otras personas están leyendo

Instrucciones

  1. 1

    Abre tu archivo C++ en un editor como Microsoft Visual Studio Express.

  2. 2

    Incluye las librerías necesarias para acceder a las funciones añadiendo este código en la parte superior del archivo:

    include <ctype.h> // isdigit

    include <stdlib.h> // atoi

    include <string.h> // strlen

    include <stdio.h> // printf, fgets, stdin, BUFSIZ

  3. 3

    Declara las variables necesarias para introducir un entero añadiendo este código en la parte superior de tu función:

    int number; unsigned n; char buffer[BUFSIZ]; bool found_nondigit, valid;

  4. 4

    Pide al usuario que introduzca un entero. Comprueba si es una entrada válida y, si no lo es, sigue pidiendo una entrada hasta que el usuario introduzca sólo un entero añadiendo este código:

    valid = false;

    while (!valid) { printf ( "Enter an integer: " ); if (fgets (buffer, sizeof buffer, stdin) != NULL) { buffer[strlen(buffer)-1] = '\0';

    found_nondigit = false;

    if (strlen(buffer) == 0) found_nondigit = true;

    for (n=0; n<strlen(buffer); n++) if (!isdigit(buffer[n])) found_nondigit = true;

    if (!found_nondigit) { number = atoi(buffer); printf ("%d\n", number); valid = true; } else printf ( "Error: Invalid input\n" ); } }

    Las entradas como "5f", "x6" y "8.4" se detectarán como entradas no válidas. El bucle "for" comprueba si cada carácter introducido es un número del 0 al 9. La línea "if (strlen(buffer) == 0)" comprueba si el usuario ha pulsado "Intro" sin introducir una entrada. La función "atoi" convierte la entrada en un entero cuando se ha validado.

  5. 5

    Guarda el archivo C++, compila y ejecuta el programa para obtener la entrada de entero del usuario.

No dejes de ver

Filtrar por:
  • Mostrar todos
  • Artículos
  • Galerías de fotos
  • Videos
Ordenar:
  • Más relevante
  • Más popular
  • Más reciente

No se encuentran artículos disponibles

No se encuentran slideshows disponibles

No se encuentran videos disponibles