Ayuda con estructuras

Iniciado por elle_hack, 12 Junio 2012, 04:22 AM

0 Miembros y 1 Visitante están viendo este tema.

elle_hack

Gente del foro..
Tengo un problema, estoy codificando algo en c++ y cuando leo una entrada del teclado el programa queda con el cursor titilando y sin pasar a mostrar lo siguiente ni nada más, es como si entrara en algún bucle infinito o algo así, o como si estuviera ejecutando algo..
A continuacion meto parte del código..
////////////////////////////
char inve()
{
   char temp[5];
   char est='x';
   vehi.id=i;
   cout<<"Ingrese los datos del vehiculo "<<vehi.id<<".."<<endl;
   //cin.getline(temp,5,'\n');
   cout<<"Marca: ";
   cin.getline(vehi.marca,30,'\n');
   cout<<"Modelo: ";
   //cin.getline(vehi.modelo,30,'\n');
   cin.get(vehi.modelo,3);
   /*cout<<"Anho: ";
   cin>>vehi.anho;
   cin.getline(temp,5,'\n');
   cout<<"Color: ";
   cin.getline(vehi.color,10,'\n');
   cout<<"UA: ";
   cin>>vehi.ua;
   cin.getline(temp,5,'\n'); // limpiamos el buffer
   cout<<"Duenho: ";
   cin.getline(vehii].duenho_nom,30,'\n');
   cout<<"Duenho DOCNro: ";
   cin>>vehi.duenho_doc;
   cin.getline(temp,5,'\n');*/
   fflush(stdin);
   est = 'c';
   return est;
}
///////////
El array vehi es de tipo vehiculo que es una estructura que esta definida como global, y cuando llega a esta linea <<cin.get(vehi.modelo,3);>> ahí congela el programa y ocurre lo que les mencione.. vale decir q a esta funcion la llamo del main()..
Alguna ayuda me sería sumamente provechosa ya que mañana entrego esto.....
Saludos.....

x64core

decis el array... quiza si posteas la definicion de la estructura, obviamente debe ser un buffer no un char

elle_hack

la definicion de la estructura es--
struct vehiculo
{
   int id;
   char marca[30];
   char modelo[30];
   int anho;
   char color[10];
   int ua; // 1 - auto, 2 - camioneta, 3 - camion
   char duenho_nom[30];
   int duenho_doc;
   char ni;
   int blo;
   int pos;
};

............
como q debe ser un buffer?estoy medio perdido en c, hace nose cuanto q ni lo miraba..... :huh:

x64core

#3
si, asi esta bien la declaracion del buffer... quiza si posteas todo el codigo  :xD
me interesaria depurarlo :xD
sinceramente siempre utilizo cin >>, o getline

elle_hack

ahora logre solucionarlo, o algo asi digamosle.........

case 'i':
         {
            ualibresbn1=get_ualibres(bloquen1);
            if(ualibresbn1>0)
            {
               cout<<endl<<"-----------------------"<<endl;
               cout<<"Ingreso de vehiculo...."<<endl;
               cout<<"-----------------------"<<endl;
               esting=ingresavehiculo();

               if(esting=='c')
               {
                  estubi=ubicavehiculo(bloquen1);
               }
               else
               {
                  cout<<"Hubo un ERROR al ingresar el vehículo.. No se lo pudo ubicar.."<<endl;
               }
            }
            else
            {
               ualibresbn2=get_ualibres(bloquen2);
               if(ualibresbn2>0)
               {
                  cout<<"Ingreso de vehiculo...."<<endl;
                  esting=ingresavehiculo();
                  if(esting=='c')
                  {
                     estubi=ubicavehiculo(bloquen2);
                  }
               }
               else
               {
                  cout<<"No hay lugares disponibles en ninguno de los bloques en ambos niveles";
                  system("pause");
               }
            }
            break;
         }

/////////////////////
lo que hice fue quitarle el if a el case que muestro ahi..... desde las lineas
ualibresbn1=get_ualibres(bloquen1);
            if(ualibresbn1>0)
tuve que comentar dejando sin comentar solo
cout<<"Ingreso de vehiculo...."<<endl;
                  esting=ingresavehiculo();
y ahi se soluciono el problema, exactamente aun nose cual sería el problema, espero no toparme de nuevo con el ya que las partes que comente luego las iré usando de a una otra vez.....
Gracias por la ayuda y si tengo otro problema lo estare publicando acá....  :D