elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda en la validación de entrada de datos en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda en la validación de entrada de datos en C++  (Leído 9,862 veces)
theluigy13etv

Desconectado Desconectado

Mensajes: 179


Primero se hace, después se mejora


Ver Perfil
Ayuda en la validación de entrada de datos en C++
« en: 26 Junio 2011, 08:44 am »

Hola a todos, me alegro de haber encontrado este sitio web...veo que acá podemos compartir información..recien estoy aprendiendo a usar el C++, en particular uso el compilador Borland C++ 5.02 y tengo el siguiente problema:

Cuando realizo un programa en donde me permita ingresar solo números enteros desde 1 hasta el 100 utilizo las funciones gotoxy y clreol juntas para poder lograr con mi cometido de tal forma que si ingreso algun numero que no se encuentre en el intervalo [ 1 ; 100 ] el programe se estanque hasta que ingrese un valor válido. El código es el siguiente:

# include <string.h>
# include <conio.h>
# include <iostream.h>
# include <stdio.h>
# include <stdlib.h>
# define l 100

// ********************************************************************
int main()
{
char resp;
system("color 1e");
short int n;
gotoxy(15,5); cout<<"DATOS DE ALUMNOS";
gotoxy(15,6); cout<<"----------------";
gotoxy(5,8); cout<<"_______________________________________________";
do{
gotoxy(10,10); cout<<"Ingrese numero de alumnos a ingresar: ";
clreol(); system("color 1e"); cin>>n;
}while(100<n || n<1);
getche();
}

// ********************************************************************

El problema :-[ está cuando ingreso texto, parece que ocurre un bucle infinito y no sé cuál es la razón y como poder arreglarlo, yo sé que sería ilógico ingresar texto cuando el programa me solicita el ingreso de un número, pero quiero hacer un programa eficiente que cuando ingrese algo que no me pidan o cuando por error presione alguna tecla que no corresponda, el programa responda de la forma adecuada indicando que estoy ingresando mal los datos y que ingrese correctamente....Espero respuestas....Muchas gracias

Aaaa.. >:D..además me pregunto si es posible realizar lo anterior, pero sin usar gotoxy ni clreol pero usando las funciones de la librería estándar  :rolleyes:-


En línea

Therue

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda en la validación de entrada de datos en C++
« Respuesta #1 en: 27 Junio 2011, 23:08 pm »

Hola segun el condicional que has puesto en el while,estas leyendo numeros hasta que se introduzca un numero menor que 1 o un numero mayor que 100.
Si quieres que un intervalo sea cerrado debes poner AND por ejemplo
(n>=1 && n<=100).Un saludo espero te sirva.


En línea

theluigy13etv

Desconectado Desconectado

Mensajes: 179


Primero se hace, después se mejora


Ver Perfil
Re: Ayuda en la validación de entrada de datos en C++
« Respuesta #2 en: 28 Junio 2011, 14:11 pm »

 :D Gracias por contestarme...mmm...creo que no me dejé entender...lo que quiero en esa parte del código es que el programa solo acepte valores desde 1 hasta 100...de tal forma que si ingreso 0 (0<1)  o 123 (123>100)  en cualquiera de los dos casos el programa borre dicha linea y se vuelva e ejecutar la misma instrucción de lectura hasta que ingrese el número correcto...Bueno creo que eso si lo hice más o menos bien...el problema está cuando ingreso alguna palabra o texto...el programa lo lee pero se "cuelga" como si se estuviera produciendo un bucle infinito...Espero más aportes...muchísimas gracias
En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Ayuda en la validación de entrada de datos en C++
« Respuesta #3 en: 28 Junio 2011, 15:41 pm »

Primeramente, déjame decirte de nuevo que tienes el bucle mal. El esquema y la intención son muy buenos pero lo tienes que hacer tal y como Therue mencionó. Pégale un repaso a los operadores de C/C++:

http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B

Finalmente, para comprobar si has introducido un número o una cadena, puedes usar la función atoi (http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/). Te dejo un pequeño código para que lo entiendas mejor:

Código
  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cstring>
  4.  
  5. int main()
  6. {
  7. char string[50];
  8.  
  9. fgets(string, 50, stdin);
  10.  
  11. if(string[strlen(string) - 1] == '\n')
  12. string[strlen(string) - 1] = '\0';
  13.  
  14. int integer = atoi(string);
  15.  
  16. if(integer == 0)
  17. {
  18. printf("\n");
  19.  
  20. main();
  21. }
  22.  
  23. else
  24. printf("%d", integer);
  25.  
  26. //O lo que sea
  27.  
  28. getchar();
  29.  
  30. return 0;
  31. }


PD: ¿No te da errores tu código? ¿Qué compilador estás usando?
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
theluigy13etv

Desconectado Desconectado

Mensajes: 179


Primero se hace, después se mejora


Ver Perfil
Re: Ayuda en la validación de entrada de datos en C++
« Respuesta #4 en: 29 Junio 2011, 17:28 pm »

Uso el Borland C++ 5.02 ..  :(
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ayuda en la validación de entrada de datos en C++
« Respuesta #5 en: 29 Junio 2011, 18:04 pm »

Uso el Borland C++ 5.02 ..  :(

Utiliza otro, el que utilizas está obsoleto.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
theluigy13etv

Desconectado Desconectado

Mensajes: 179


Primero se hace, después se mejora


Ver Perfil
Re: Ayuda en la validación de entrada de datos en C++
« Respuesta #6 en: 30 Junio 2011, 06:14 am »

Sí gracias por el comentario...gustoso lo haría pero en el lugar en donde estoy llevando el curso nos exigen a usar este compilador...y debemos de hacerlo...aunque luego que termine el curso...usaré el Dev o algún otro que sea libre.  XD
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ayuda en la validación de entrada de datos en C++
« Respuesta #7 en: 30 Junio 2011, 06:51 am »

Entiendo, pues menuda persona el que los hace que usen ese compilador, habiendo muchisimos mejores, en fin, saludos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines