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:
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:
- Paso 1: el usuario crea una función llamada getIntegeronly() y la asigna a int x.
- 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:
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