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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Realmente extraño problema con cin.getline
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Realmente extraño problema con cin.getline  (Leído 2,554 veces)
Omar_2013

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Realmente extraño problema con cin.getline
« en: 11 Abril 2014, 01:13 am »

Hola Buenas, el problema es que en mi código en la LINEA 20,cin.getline pasa de largo y no ejecuta la instrucción de leer, ya he depurado el código con Dev C++ pero es realmente extraño.

El error ÚNICAMENTE SUCEDE al escoger primero la opción 2 y después intentar con la 1.

Aquí esta la porción de código.
Código
  1.    while (Opcion!=3)
  2.    {
  3.          cout<<"Menu Principal\n\n";
  4.  
  5.          cout<<"1. Ingresar a Facebook";
  6.          cout<<"2. Crear una cuenta"<<endl;
  7.          cout<<"3. Salir\n\n\n";
  8.  
  9.          CharOp=getch();//Lee un caracter sin presionar enter y sin mostrarlo en pantalla
  10.  
  11.          if (CharOp=='1')
  12.          {
  13.             Opcion=1;//Se Decrara para mantener la condicion while principal
  14.             system("cls");
  15.  
  16.             Intentos=0;
  17.             while (Intentos!=3)
  18.             {            
  19.                   gotoxy(30,10);cout<<"Usuario: ";
  20.                   cin.getline(User,10,'\n');
  21.  
  22.                   Validacion=BuscarLista(&ListaUsuarios, User, 1);//Validacion Se Encarga de ver si el Usuario Existe,
  23.                   if ( Validacion==false )
  24.                   {
  25.                      gotoxy(39,12);cout<<"ID no encontrada!!!"<<endl;
  26.                      Sleep(1500);
  27.                      //Borra Los Espacios Incorrectos Para Un Nuevo Intento
  28.                      gotoxy(39,10);cout<<"                         ";
  29.                      gotoxy(39,12);cout<<"                         ";
  30.                      gotoxy(28,10);textcolor(12);cout<<char(219);
  31.                      Intentos+=1;
  32.                   }
  33.                   else
  34.                       Intentos=3;
  35.             }
  36.  
  37.          }
  38.  
  39.          if (CharOp=='2')
  40.          {
  41.             Opcion=2;//Se Decrara para mantener la condicion while principal
  42.  
  43.             cout<<"Nombre: ";
  44.             cin.getline(CuentaNueva.Nombre, 20,'\n');
  45.             cout<<"ID: ";
  46.             cin.getline(CuentaNueva.ID, 10,'\n');
  47.             cout<<"Contrase"<<char(164)<<"a: ";
  48.             cin.getline(CuentaNueva.Contrasenia, 10,'\n');
  49.             cout<<"Genero (M - F): ";//AQUI ESTA EL ERROR????
  50.             cin>>CuentaNueva.Genero;
  51.             cout<<"Edad: ";
  52.             cin>>CuentaNueva.Edad;
  53.             cout<<"Documento: ";
  54.             cin>>CuentaNueva.Documento;
  55.  
  56.             InsertarFinal(&ListaUsuarios, CuentaNueva);
  57.          }
  58.  
  59.          if (CharOp=='3')
  60.             Opcion=3;//Se Decrara para mantener la condicion while principal
  61.  
  62.          system("cls");
  63.    }
  64.  

Si no me hago entender por favor descarguen el ejecutable
https://mega.co.nz/#!Btx2URJb!Dsr7oOEZx5RfvQkVlEAAv5gSw40uD2FEw-Uxh1mQJ9I

Aqui el link del codigo
https://mega.co.nz/#!owZQHZjB!QLbJo-EUYFfucYX2Mnn2GoBqzA56PLwqa1BYo4996Fs


« Última modificación: 11 Abril 2014, 02:51 am por Omar_2013 » En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Realmente extraño problema con cin.getline
« Respuesta #1 en: 11 Abril 2014, 02:07 am »

Hola tu imagen no se ve muy bien de que es lo que sucede en el programa.

Pero si no me equivoco como ya se habia visto en otro hilo parecido a esto
http://foro.elhacker.net/programacion_cc/buenas_otra_vez_jaja_tengo_un_problema_con_programa-t412011.0.html

el problema que tenia el era con el cin.getline tambien

que significa el cin.ingore();
http://foro.elhacker.net/programacion_cc/funcion_cinignore-t290246.0.html

saludos espero haberte ayudado y si persisten las dudas pregunta.


« Última modificación: 11 Abril 2014, 02:09 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
Omar_2013

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Realmente extraño problema con cin.getline
« Respuesta #2 en: 11 Abril 2014, 02:20 am »

Gracias por responder nolasco281, la verdad no he podido, pero ya he subido el link para que descargues el ejecutable y te des cuenta del error
« Última modificación: 11 Abril 2014, 02:52 am por Omar_2013 » En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Realmente extraño problema con cin.getline
« Respuesta #3 en: 11 Abril 2014, 02:40 am »

Tranquilo amigo con que comentes o pongas como el codigo como lo histe en el primer comentario esta bien.

El problema creo que debe de estar en la opcion 1 ya que es la que trata de recuperar los datos y no lo hace como debe.

Dejame lo veo. Si no alquien mas te ayudara : ) seguro no lo dudes.

Disculpa que te conteste hasta horita pero no tengo la libreria conio2 y tu problema es la momento al momento de guardar los datos ya que si ingresas un registro y luego ingresas a la opcion 1 se genera un problema.

pero si ingresas un registro y luego ingresas otro no lo ingresa pero se entras a la primera opcion el programa sique sin ningun proble y sin pedirte datos.

lamento no poder ejecutarlo por la libreria y por otros motivos deL S.O.

Pero rebisa tus metodos de como se guardan los datos (registros) si puedo consequir otra pc espero poder ayudarte.

saludos sequire intentadolo.
« Última modificación: 11 Abril 2014, 03:20 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
Omar_2013

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Realmente extraño problema con cin.getline
« Respuesta #4 en: 11 Abril 2014, 03:20 am »

Muy bien muchísimas gracias, lo seguiré revisando

Definitivamente no   :-( :-( :-( no lo encuentro
« Última modificación: 11 Abril 2014, 03:55 am por Omar_2013 » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Realmente extraño problema con cin.getline
« Respuesta #5 en: 11 Abril 2014, 05:19 am »

Como ya te comento nolasco281 ese comportamiento se debe al uso intercalado de cin y getline.

La opcion 2 termina con la sentencia:
Código
  1. cin >> CuentaNueva.Documento;
Ahí el avance de linea (el carácter '\n') se queda en el bufer de la entrada estándar.

La opcion 1 inicia con la sentencia:
Código
  1. cin.getline(User, 10, '\n');
Ahí el carácter '\n' (dejado por la sentencia anterior) se toma como una linea en blanco.

La solución es, después del uso de cin, utilizar un bucle para descartar el resto de linea o bien llamar a la función sync o ignore. Ejemplos sobre ello los puedes revisar mediante el motor de búsqueda de los foros.

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROBLEMA con la funcion miembro getline() e ignore()
Programación C/C++
.:BlackCoder:. 9 7,448 Último mensaje 27 Julio 2010, 04:29 am
por leogtz
Problema con el delimitador de getline [SOLUCIONADO]
Programación C/C++
anonimo12121 3 5,139 Último mensaje 1 Abril 2013, 18:13 pm
por anonimo12121
Problema con cin.getline
Programación C/C++
erest0r 8 6,577 Último mensaje 24 Agosto 2013, 03:33 am
por erest0r
Problema con cin.getline
Programación C/C++
RiCo9297 0 1,437 Último mensaje 16 Diciembre 2016, 20:26 pm
por RiCo9297
PROBLEMA CON getline
Programación C/C++
Realser86 2 2,325 Último mensaje 25 Octubre 2017, 21:33 pm
por Realser86
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines