Autor
|
Tema: como hago para saber que posición del vector esta libre? (Leído 7,894 veces)
|
holamega12
Desconectado
Mensajes: 26
|
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]
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
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
Mensajes: 26
|
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
Mensajes: 1.211
|
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
|
|
|
|
holamega12
Desconectado
Mensajes: 26
|
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
Mensajes: 1.639
|
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: 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
|
|
|
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
Mensajes: 26
|
Junto con el array declaras una variable para el numero de personas introducidas, esta tambien indica la siguiente posicion libre: 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.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Estrallitas para saber la posicion
« 1 2 3 »
Sugerencias y dudas sobre el Foro
|
SkAbEn
|
25
|
11,355
|
13 Marzo 2004, 00:42 am
por Ðevastador
|
|
|
Como hago para saber con qué esta protegido?
Ingeniería Inversa
|
Ch3ck
|
3
|
3,560
|
13 Diciembre 2008, 06:41 am
por Amerikano|Cls
|
|
|
Cómo hago para saber...
Hacking Wireless
|
Pedrinchi27
|
1
|
2,966
|
31 Mayo 2013, 16:14 pm
por simorg
|
|
|
como hago para pasar un vector {1,2,3,4,5,6,7,8,9} a una matriz de 3x3 ?????
Programación C/C++
|
nixonanacona01
|
1
|
2,503
|
18 Mayo 2016, 15:30 pm
por AlbertoBSD
|
|
|
Necesito Un Algoritmo para intercambiar de Posición dos elementos de un vector
Dudas Generales
|
itzg3
|
3
|
5,822
|
4 Julio 2016, 02:05 am
por engel lex
|
|