Autor
|
Tema: usar control de caracter (Leído 3,273 veces)
|
retsam07
Desconectado
Mensajes: 7
|
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
|
|
« Última modificación: 16 Noviembre 2012, 03:30 am por retsam07 »
|
En línea
|
|
|
|
Don Pollo
Desconectado
Mensajes: 74
/* No comments */
|
Lo que puedes hacer es leer la edad a un array de caracteres, y después uno a uno haces esta comprobación: if(edad[0] >= 0 && edad[0] <= 9)
Cuando tengas comprobado que todos son números, lo pasas a int y listo.
|
|
|
En línea
|
|
|
|
|
retsam07
Desconectado
Mensajes: 7
|
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
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
La declaración del array: char edad[0];
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|. 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: #include <stdio.h> #include <stdlib.h> int main(void) { int num; int rv; int ch; while (1){ if ((rv = scanf("%d", &num )) == EOF ) return EXIT_FAILURE; else if (rv == 1) break; while ((ch = getchar()) != EOF && ch != '\n') ; } printf("El numero es %d\n", num ); return EXIT_SUCCESS; }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
retsam07
Desconectado
Mensajes: 7
|
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(); }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Detectar un caracter de control en una condición
« 1 2 »
Programación Visual Basic
|
Carloswaldo
|
13
|
4,844
|
3 Marzo 2009, 03:20 am
por Carloswaldo
|
|
|
Reemplazar un caracter en una posicion dada por otro caracter
Java
|
nico56
|
8
|
16,199
|
8 Mayo 2010, 22:26 pm
por Debci
|
|
|
copiar el contenido de un fichero caracter por caracter (redireccionado)
Programación C/C++
|
Pirata LOL
|
2
|
5,026
|
22 Febrero 2011, 04:10 am
por Pirata LOL
|
|
|
duda con caracter de control
.NET (C#, VB.NET, ASP)
|
Senior++
|
1
|
2,322
|
15 Enero 2012, 03:51 am
por seba123neo
|
|
|
Diferencias entre usar caracter o secuencia de escape
Programación C/C++
|
Caster
|
5
|
3,841
|
29 Enero 2012, 13:10 pm
por Caster
|
|