Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problema con gets en ciclo for

Estas en el tema de Problema con gets en ciclo for en el foro de C/C++ en Foros del Web. Buenas noches, tengo un ligero problema en un programa que estoy haciendo, aqui les adjunto el codigo del mismo: #include <iostream> #include <conio.h> #include <stdio.h> ...
  #1 (permalink)  
Antiguo 14/05/2013, 22:48
Avatar de jbs97  
Fecha de Ingreso: mayo-2013
Mensajes: 2
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Problema con gets en ciclo for

Buenas noches, tengo un ligero problema en un programa que estoy haciendo, aqui les adjunto el codigo del mismo:

#include <iostream>
#include <conio.h>
#include <stdio.h>

using namespace std;

int main()
{
cout << "*DATOS PERSONALES DE N PERSONAS*";
int N;
char NOM[30];
char DIR[40];
char TEL[12];
cout << "\n\n\nIngrese el numero de personas: ";
cin >> N;
int i;
for (i = 1; i < N + 1; i ++)
{
cout << "\n\nIngrese los datos personales";
cout << "\n\nNombre: ";
gets (NOM);
cout << "\nDireccion: ";
gets (DIR);
cout << "\nTelefono: ";
gets(TEL);
}
getch();
return 0;
}

*El problema es donde empieza el ciclo for, ya que al ingresar el numero de personas y aparecer en pantalla donde se ingresaran los datos personales, la primera vez se "salta" el apartado del nombre, empezando con la direccion y luego el telefono, ya despues de la primera vez es cuando me pide el nombre, la direccion y el telefono, y no tengo idea de porque se salta el nombre en la primera vez:c , espero que me ayuden y de antemano gracias por su ayuda y tiempo:)
  #2 (permalink)  
Antiguo 14/05/2013, 23:59
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Problema con gets en ciclo for

Por favor usa el resaltado de código.

La razón de por que no funciona es por que cin lee los números y en cuanto se da cuenta que ya no hay nada mas que procesar se detiene y no termina de consumir los enter o espacios en blanco que hayas dejado.

Lo que tienes que hacer es leer una linea y después procesar el numero que hay en esa linea.

Algunos consejos:
1. No uses conio, es viejo, no es estándar, no te va a servir para nada y no hay nada que no puedas hacer con la ayuda de mejores librerias.
2. Probablemente estés usando algún sabor de Borland, te recomiendo no hacerlo. Haz uso de otro compilador. Si estas en windows te recomiendo code blocks + mingw es muy fácil de usar e instalar. http://www.codeblocks.org/downloads recuerda bajar la versión con mingw.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <sstream>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.   cout << "*DATOS PERSONALES DE N PERSONAS*";
  9.   int N;
  10.   char NOM[30];
  11.   char DIR[40];
  12.   char TEL[12];
  13.   char line[10];
  14.   cout << "\n\n\nIngrese el numero de personas: ";
  15.   cin.getline(line, 10);
  16.   istringstream iss( line );
  17.   iss >> N;
  18.  
  19.  
  20.   int i;
  21.   for (i = 1; i < N + 1; i ++)
  22.   {
  23.     cout << "\n\nIngrese los datos personales";
  24.     cout << "\n\nNombre: ";
  25.     cin.getline(NOM, 30);
  26.     cout << "\nDireccion: ";
  27.     cin.getline(DIR, 40);
  28.     cout << "\nTelefono: ";
  29.     cin.getline(TEL, 12);
  30.   }
  31.   return 0;
  32. }
  #3 (permalink)  
Antiguo 15/05/2013, 13:58
Avatar de jbs97  
Fecha de Ingreso: mayo-2013
Mensajes: 2
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Problema con gets en ciclo for

Muchas gracias por tu ayuda y por los consejos:) los tendré muy en cuenta

Etiquetas: c++
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:19.