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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como hago para saber que posición del vector esta libre?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como hago para saber que posición del vector esta libre?  (Leído 7,894 veces)
holamega12

Desconectado Desconectado

Mensajes: 26


Ver Perfil
como hago para saber que posición del vector esta libre?
« en: 20 Abril 2014, 17:50 pm »

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:

Código:
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]


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: como hago para saber que posición del vector esta libre?
« Respuesta #1 en: 20 Abril 2014, 18:30 pm »

Código
  1. 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".


En línea

holamega12

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: como hago para saber que posición del vector esta libre?
« Respuesta #2 en: 20 Abril 2014, 18:42 pm »

Código
  1. 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
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: como hago para saber que posición del vector esta libre?
« Respuesta #3 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.
En línea

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

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: como hago para saber que posición del vector esta libre?
« Respuesta #4 en: 20 Abril 2014, 18:55 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
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: como hago para saber que posición del vector esta libre?
« Respuesta #5 en: 20 Abril 2014, 19:45 pm »

buscando 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
  1. int main()
  2. {
  3.   T_datos_personales personas[5];
  4.   int num_personas = 0;
  5.   int opciones = 0;
  6.  
  7.   // ...
  8.  
  9.   case 2:
  10.      // Se agrega una persona solo si num_personas es menor que cinco ...
  11.  
  12.      // Se actualiza el contador de personas
  13.      num_personas++;
  14.  
  15.   // ...

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
holamega12

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: como hago para saber que posición del vector esta libre?
« Respuesta #6 en: 20 Abril 2014, 19:57 pm »

Junto con el array declaras una variable para el numero de personas introducidas, esta tambien indica la siguiente posicion libre:
Código
  1. int main()
  2. {
  3.   T_datos_personales personas[5];
  4.   int num_personas = 0;
  5.   int opciones = 0;
  6.  
  7.   // ...
  8.  
  9.   case 2:
  10.      // Se agrega una persona solo si num_personas es menor que cinco ...
  11.  
  12.      // Se actualiza el contador de personas
  13.      num_personas++;
  14.  
  15.   // ...

Un saludo

muchas gracias a todos, ya funciona correctamente.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines