Validacion en c++

Tengo un programa que me hace cálculos matemáticos y no quiero que me permita caracteres como lo hago.
Respuesta
1
Para lograrlo, hay que leer carácter por carácter, como se vayan ingresando, y desechar los que no sean ni dígitos ni punto (¿porque supongo que también quieres punto decimal no?), e irlos guardando, hasta que se ingresa el enter.
A continuación te doy un ejemplo que hice.
La función GetNum() que incluye el programa la puedes usar igual que la gets(), pero en este caso solo te permitirá dígitos y punto en la entrada (solo un punto decimal eh!).
Espero que te sirva, trabaja en la consola de MS-DOS, si la estás usando en un programa de Ventanas no va a funcionar.
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
char *GetNum(char *num);
int main(void) {
char num[100];
printf("introduzca el valor : ");
GetNum(num);
printf("el valor es : %s\n", num);
return 0;
}
char *GetNum(char *num) {
char ch;
int i;
int hasPoint;
i = 0;
hasPoint = 0;
do {
ch = getch();
if (ch == 13) {
printf("\n");
num[i++] = 0;
return num;
}
else if (isdigit(ch)) {
num[i++] = ch;
printf("%c", ch);
}
else if (ch=='.' && !hasPoint) {
num[i++] = ch;
hasPoint = 1;
printf("%c", ch);
}
else if (ch == 8) {
if (i > 0) {
printf("%c %c", ch, ch);
i--;
if (num == '.')
hasPoint = 0;
}
}
} while (1);
}
PD: cuando hace la comparaión de if (ch == 8), se refiere a si el carácter ingresado es el de retroceso.
Rober_

1 respuesta más de otro experto

Respuesta
1
Debes validar los datos, cada vez que introduces un dato debe estar almacenado en una variable tipo string o carácter, después validas cada uno de los caracteres para que su valor en ascii sea dentro del rango de los números es decir dentron de 48 y el 57, si no esta dentro del parámetro pues no lo aceptas, después para usarlos solo lo conviertes en integer o entero con numero=atoi(variable)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas