Mejorar el Programa
Vamos a mejorar nuestro programa para hacerlo más amigable con el usuario y más robusto. Agregaremos un bucle para que el usuario pueda comprobar múltiples números sin reiniciar el programa, y también agregaremos validación de entrada.
Actualiza tu archivo main.c
con el siguiente código:
#include <stdio.h>
#include <string.h>
#include <ctype.h> // For isdigit function
int main() {
char number[20];
int flag, i;
char choice;
do {
flag = 0; // Reset flag for each iteration
// Prompt the user to enter a number
printf("\nEnter a number: ");
scanf("%s", number);
// Input validation - check if the input contains only digits and at most one decimal point
int valid = 1;
int decimal_count = 0;
for(i = 0; number[i] != '\0'; i++) {
if(number[i] == '.') {
decimal_count++;
if(decimal_count > 1) {
valid = 0;
break;
}
} else if(!isdigit(number[i])) {
valid = 0;
break;
}
}
if(!valid) {
printf("Invalid input! Please enter a valid number.\n");
continue;
}
// Check if the number is integer or float
for(i = 0; number[i] != '\0'; i++) {
if(number[i] == '.') {
flag = 1;
break;
}
}
// Display the result
if(flag) {
printf("The entered number is a floating point number.\n");
} else {
printf("The entered number is an integer number.\n");
}
// Ask if the user wants to continue
printf("\nDo you want to check another number? (y/n): ");
scanf(" %c", &choice);
} while(choice == 'y' || choice == 'Y');
printf("\nThank you for using the program!\n");
return 0;
}
Esta versión mejorada incluye:
- Un bucle
do-while
que permite al usuario comprobar múltiples números.
- Validación de entrada para garantizar que la entrada contenga solo dígitos y como máximo un punto decimal.
- Una interfaz más amigable con mensajes y retroalimentación más claros.
Compila y ejecuta esta versión mejorada:
cd ~/project
gcc main.c -o main
./main
Pruébalo con varias entradas, incluyendo:
- Números enteros como
42
- Números de punto flotante como
3.14
- Entradas no válidas como
abc
o 1.2.3
El programa debe manejar adecuadamente todos estos casos y permitirte continuar comprobando números hasta que decidas salir.