Título: usar control de caracter Publicado por: retsam07 en 16 Noviembre 2012, 03:25 am buenas
hice un programa que pide al usuario ingresar la edad para ver si puede votar . necesito hacer un tipo de validación para que el programa solo acepte números y si por error el usuario introduce un carácter le tire un mensaje de error y le pida de nuevo que introduzca la edad. tiene que ser en lenguaje C y uso devc++ este es el código #include<stdio.h> #include<conio.h> #include <stdlib.h> int main() { int edad; int resp=1; while(resp==1) { printf("\n\t\t\t\tPRACTICA #1\n"); printf("\n\t\tPrograma que permita capturar la edad e indique con un\n "); printf("\t\t mensaje en pantalla si la persona puede votar o no.\n\n"); printf("\n INGRESE LA EDAD: "); scanf("%d",&edad); if(edad>=18){ printf("\n <<EL USUARIO PUEDE VOTAR>>\n"); } if((edad>0)&&(edad<18)) { printf("\n << EL USUARIO NO PUEDE VOTAR>>\n"); } if (edad<0){ printf("\t\n<<ERROR>>OPCION INVALIDA\n\n "); } printf("\nSi desea repetir teclee 1, si desea salir teclee 0\n"); scanf("%d", &resp); while (( resp !=1) && (resp !=0 )) { printf("\n<<opcion invalida>>\n"); printf("\nSi desea repetir teclee 1, si desea salir teclee 0\n"); scanf( "%d", &resp); } if (resp==0){ exit(0); } else if (resp == 1){ resp=1; } system("cls"); } getch(); } gracias de antemano Título: Re: usar control de caracter Publicado por: Don Pollo en 16 Noviembre 2012, 11:05 am Lo que puedes hacer es leer la edad a un array de caracteres, y después uno a uno haces esta comprobación:
Código
Cuando tengas comprobado que todos son números, lo pasas a int y listo. Título: Re: usar control de caracter Publicado por: Sacopapas en 16 Noviembre 2012, 11:15 am Puedes controlar si lo que te pasan son números o letras con código ASCII , si están dentro de un rango son números y sino son caracteres u otra cosa.
http://www.elcodigoascii.com.ar/codigo-americano-estandar-intercambio-informacion/codigo-ascii.gif Título: Re: usar control de caracter Publicado por: retsam07 en 20 Noviembre 2012, 22:32 pm hice lo que me recomendaste pero ahora tengo un problema y es que quiero que si el usuario introduzca 18 le salga puede votar,
o sea que entre al if en donde esta la condicion de que si puede votar o no es que no entra a ese if lo hice asi #include<stdio.h> #include<conio.h> #include <stdlib.h> int main() { char edad[0]; int resp=1,valida=1; while(resp==1) { do{ valida=1; printf("\n\t\t\t\tPRACTICA #1\n"); printf("\n\t\tPrograma que permita capturar la edad e indique con un\n "); printf("\t\t mensaje en pantalla si la persona puede votar o no.\n\n"); printf("\n INGRESE LA EDAD: "); scanf("%s",edad); if(edad[0]<'0') valida=0; if(edad[0]>'9') valida=0; if(valida==0){ printf("ERROR<<OPCION INVALIDA>>.\n"); } { system("cls");} }while(valida=1); if(edad[0]>=18){ printf("\n <<EL USUARIO PUEDE VOTAR>>\n"); } if((edad[0]>0)&&(edad[0]<18)) { printf("\n << EL USUARIO NO PUEDE VOTAR>>\n"); } if (edad[0]<0){ printf("\t\n<<ERROR>>OPCION INVALIDA\n\n "); } printf("\nSi desea repetir teclee 1, si desea salir teclee 0\n"); scanf("%d", &resp); while (( resp !=1) && (resp !=0 )) { printf("\n<<opcion invalida>>\n"); printf("\nSi desea repetir teclee 1, si desea salir teclee 0\n"); scanf( "%d", &resp); } if (resp==0){ exit(0); } else if (resp == 1){ resp=1; } system("cls"); } getch(); } gracias Título: Re: usar control de caracter Publicado por: rir3760 en 20 Noviembre 2012, 23:21 pm La declaración del array:
Código No es valida ya que se debe indicar el numero de elementos mediante una expresión de tipo entero (short, int , etc.) mayor que cero. Y se recomienda evitar el uso de la biblioteca conio de Borland, mas información en el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html). Para validar la entrada debes verificar el valor de retorno de la función "scanf", esta indica el numero de conversiones con éxito. Un ejemplo de su uso: Código
Un saludo Título: Re: usar control de caracter Publicado por: retsam07 en 22 Noviembre 2012, 13:50 pm buenas de nuevo
ahora si que el programa esta ya casi cocido pero tengo un pequeño problema es que en la parte else if (edad[0]>0 && edad[0]<18){ printf("\n << EL USUARIO NO PUEDE VOTAR>>\n"); } no me entra si no que sale que el usuario puede votar,para ver si me pueden ayudar o decirme cual es el error. gracias este es el codigo completo #include<stdio.h> #include<conio.h> #include <stdlib.h> int main() { char edad[0]; int resp=1; while(resp==1) { printf("\n\t\t\t\tPRACTICA #1\n"); printf("\n\t\tPrograma que permita capturar la edad e indique con un\n "); printf("\t\t mensaje en pantalla si la persona puede votar o no.\n\n"); printf("ingrese numero: "); scanf("%s", edad); if((edad[0]>='a' && edad[0]<='z')||(edad[0]>='A' && edad[0]<='Z')){ printf("\n ESTE NO ES NUMERO\n\n"); } else if (edad[0]=='-'){ printf("\n ES UN NUMERO pero no es POSITIVO\n\n "); } else if(edad[0]>=18){ printf("\n <<EL USUARIO PUEDE VOTAR>>\n"); } else if (edad[0]>0 && edad[0]<18){ printf("\n << EL USUARIO NO PUEDE VOTAR>>\n"); } printf("\nSi desea repetir teclee 1, si desea salir teclee 0\n"); scanf("%d", &resp); while (( resp !=1) && (resp !=0 )) { printf("\n<<opcion invalida>>\n"); printf("\nSi desea repetir teclee 1, si desea salir teclee 0\n"); scanf( "%d", &resp); } if (resp==0){ exit(0); } else if (resp == 1){ resp=1; } system("cls"); } getch(); } |