Programa que solo permite la entrada de números enteros

Dado un valor de entrada N , la tarea es permitir tomar solo la entrada de números enteros del usuario.

Ahora, si el usuario ingresa cualquier entrada que no sea un número entero, es decir, un carácter o símbolo, no será aceptado por el programa. A continuación se muestra el programa C para implementar este enfoque:

C

// C program for the above approach
#include <stdio.h>
 
// Driver Code
int main()
{
    int a;
    printf("Enter the input: ");
 
    // Take the input from console
    scanf("%d", &a);
 
    // Display the output
    printf("The value entered by the user is: ");
    printf("%d", a);
 
    return 0;
}

Producción:

Output

Explicación: En el programa anterior, si la entrada es un valor de carácter, entonces la función scanf() tomará la entrada pero no imprimirá nada en la pantalla de salida o ignorará el carácter e imprimirá solo los números enteros. Por lo tanto, para evitar este problema, analicemos cómo escribir un programa que solo admita la entrada de números enteros. A continuación se detallan los pasos para el mismo:

Pasos: Los pasos involucrados en el programa a continuación son:

  1. Paso 1: el usuario crea una función llamada getIntegeronly() y la asigna a int x.
  2. Paso 2: en esta función, la entrada que se ingresa pasará por un bucle do-while en el que la instrucción if verifica el código ASCII del entero. Si el código ASCII coincide con el código ASCII entero, la entrada se verá en la pantalla.
do
{
    If( ch>=48 && ch<=57)
}

Here ch is the input to be enter and 48 to 57 is the 
ASCII Code of 0 to 9 respectively. 
  • Paso 3: Para hacer que el número único sea un dígito, multiplique el número y agregue el número entero que se ingresa.

num = num * 10 + (ch – 48) Aquí num * 10 cambiará el valor posicional del entero para convertirlo en un dígito y (ch – 48) sumará el entero restando su código ASCII.

  • Paso 4: Para romper el ciclo, se agrega una declaración if para que el ciclo no entre en un ciclo infinito.
if(ch == 13)
break;

Here 13 is the ASCII code of carriage return which breaks and 
return the input value.
  • Paso 5: La función de devolución devuelve el entero almacenado en num a x y la salida se imprime en la pantalla.
printf("you have entered %d", x)

A continuación se muestra el programa C para implementar el enfoque anterior:

C

// C program for the above approach
#include <stdio.h>
int getIntegerOnly();
 
// Driver Code
int main()
{
    int x = 0;
    x = getIntegerOnly();
    printf("\nvalue entered is: %d", x);
}
 
// Function to check if the user
// entered value is integer or not
 
int getIntegerOnly()
{
    int num = 0, ch;
    printf("Enter the input: ");
    do {
        ch = getchar();
         
        // Checks the ASCII code of '
        // digits 0 to 9
        if (ch >= 48 && ch <= 57) {
            printf("%c", ch);
 
            // To make a digit
            num = num * 10 + (ch - 48);
        }
 
        // 13 is carriage return it breaks
        // and return the input
        if (ch == '\n')
            break;
    } while (1);
 
    return (num);
}

Producción:

Output

Explicación: se puede observar mientras se ejecuta el programa, que el programa solo acepta la entrada de enteros e imprime la entrada en la pantalla.

Publicación traducida automáticamente

Artículo escrito por simrankumar0799 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *