como hago para saber que posición del vector esta libre?

Iniciado por holamega12, 20 Abril 2014, 17:50 PM

0 Miembros y 3 Visitantes están viendo este tema.

holamega12

Hola, resultado que tengo que realizar un programa con una estructura, por ejemplo, que almacene los datos de una persona, lo tipico, el nombre, DNI, y fecha de nacimiento, digamos, que el máximo son 5 personas:


struct T_datos_personales
{
   string nombre;
   string DNI;
   string fecha_nacimiento;

};

[code]

hasta aqui todo bien, ahora dicho registro, lo almaceno en un vector de 5 elementos, por ejemplo si lo hago con un for(); me pedira los datos de las 5 personas consecutivamente


int main()
{
    T_datos_personales personas[5];

    int opciones = 0;
   
    do{
      cout<<"Mostrar los datos personales (pulsa 1)"<<endl;
      cout<<"Añadir persona(pulsa 2)"<<endl;
      cin>>opciones;

      switch( opciones)
       case 1:
        {
            for(int i = 0; i < 5; i++)
               {
                   cout<<"Nombre: "<<personas[i].nombre<<endl;
                   cout<<"DNI: "<<personas[i].DNI<<endl;
                   cout<<"Fecha de nacimiento: "<<personas[i].fecha_nacimiento<<endl;
     
                }
           break;

        }
     
     case 2:
         {



            }


}while(opciones != 6);



}




y en el case 2 es donde tengo un problema, por ejemplo, si pongo un for() como en el case 1, con sus cin correspondientes, me pedirá los datos de las 5 personas consecutivamente, pero mi idea es, que se añade de la persona, sale del case 2, y vuelva al menú de las opciones...en este caso..¿como hago para saber que posicion del vector esta libre, para no sobreescribir los datos, y se añadan correspondientemente?

gracias y disculpen por el tocho


[/code]

ivancea96

Código (cpp) [Seleccionar]
if(personas[i].nombre=="") //Vacío

No sé si es lo que buscabas. Sinó, puedes agregarle a la estructura un "bool definido" o "bool libre".

holamega12

Cita de: ivancea96 en 20 Abril 2014, 18:30 PM
Código (cpp) [Seleccionar]
if(personas[i].nombre=="") //Vacío

No sé si es lo que buscabas. Sinó, puedes agregarle a la estructura un "bool definido" o "bool libre".

no creo que sea eso, no se si me he explicado bien, es decir, si eliges el case 2, añades los datos de una persona, una vez añadidos, sale del case, y vuelve al menú de opciones, o bien para mostrar los datos de la persona/as añadidas o añadir otra persona, buscando por ahí me han dicho ...si guardas en una variable el lugar siguiente a la última persona que añadiste la vez anterior... menudo lio

amchacon

Haz un array de punteros, si una posicion vale NULL quiere decir que esta vacia. Solo tienes que crear una nueva estructura con new.

Para borrar algo parecido, se borra con delete y se pone el puntero a NULL.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

holamega12

Cita de: amchacon en 20 Abril 2014, 18:50 PM
Haz un array de punteros, si una posicion vale NULL quiere decir que esta vacia. Solo tienes que crear una nueva estructura con new.

Para borrar algo parecido, se borra con delete y se pone el puntero a NULL.

puff no tengo tanto nivel para usar array de punteros XD

rir3760

Cita de: holamega12 en 20 Abril 2014, 18:42 PMbuscando por ahí me han dicho ...si guardas en una variable el lugar siguiente a la última persona que añadiste la vez anterior
Junto con el array declaras una variable para el numero de personas introducidas, esta tambien indica la siguiente posicion libre:
Código (cpp) [Seleccionar]
int main()
{
   T_datos_personales personas[5];
   int num_personas = 0;
   int opciones = 0;
   
   // ...
   
   case 2:
      // Se agrega una persona solo si num_personas es menor que cinco ...
   
      // Se actualiza el contador de personas
      num_personas++;
   
   // ...


Un saludo
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

holamega12

Cita de: rir3760 en 20 Abril 2014, 19:45 PM
Junto con el array declaras una variable para el numero de personas introducidas, esta tambien indica la siguiente posicion libre:
Código (cpp) [Seleccionar]
int main()
{
   T_datos_personales personas[5];
   int num_personas = 0;
   int opciones = 0;
   
   // ...
   
   case 2:
      // Se agrega una persona solo si num_personas es menor que cinco ...
   
      // Se actualiza el contador de personas
      num_personas++;
   
   // ...


Un saludo

muchas gracias a todos, ya funciona correctamente.