C/Visual C - Validar entrada de enteros

   
Vista:

Validar entrada de enteros

Publicado por TheProgramadorjoven (2 intervenciones) el 25/06/2011 23:22:12
Hola a todos, 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....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-
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Validar entrada de enteros

Publicado por minombre (1 intervención) el 13/08/2011 04:50:51
Hola

Entras en un bucle porque debes vaciar el buffer de cin tras obtener la variable n.
Inserta esto después de cin>>n;

cin.clear();
cin.get();

Eso vacía el buffer y lo limpia para recibir un nuevo valor del teclado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar