Dev - C++ - Arrays de estructuras

 
Vista:
Imágen de perfil de dotar

Arrays de estructuras

Publicado por dotar (15 intervenciones) el 11/02/2016 03:46:04
Buenas noches como podría yo copiar un arrays de estructuras en otro? me explico, si cumplen una condición, ( si están entre la edad que ingresan y un peso) copió esa estructura de arrays en otro, lo hago pero me compila perfectamente pero cuando muestro el arrays de estructura de personValida no lo muestra con los datos guardados....
ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Struct personas{
string nombre;
int edad;
int peso;
string pais;
};
 
int main () {
 
int edad,peso;
cout<<"Diga la edad minima del sistema"<<endl;
cin>>edad;
cout<<"Diga el peso minimo del sistema"<<endl;
cin>>peso;
 
 
 
personas p[50];
personas personValida[50];
 
 
 
 
for(int i=0; i<50; i++){
cout<<"Ingrese el nombre<<endl;
cin>>p[i].nombre;
cout<<"Ingrese la edad<<endl;
cin>>p[i].edad;
cout<<"Ingrese el peso"<<endl;
cin>>p[i].peso;
cout<<"ingrese el pais"<<endl;
cin>>p[i].pais;
 
if ( p[i].edad >=edad && p[i].peso >=peso)
personValida[i] = p[i];
}
 
 
 
return 0;
 
};
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Arrays de estructuras

Publicado por agustin (522 intervenciones) el 11/02/2016 08:04:52
Hay dos problemas en tu código. Si se cumple las condiciones lo que copias realmente es la dirección de la estructura y eso solo te funcionara si la memoria es dinámica y en tu caso no lo es. Además, si no se cumple alguna condición no se copiará nada con lo que al mostrar los daros del array de válidos tendrías basura.
Para solucionar el primer problema usa memcpy para hacer una copia de la memoria que ocupa la estructura en la otra estructura.
Para resolver el segundo problema yo usaría antes del for un memset que setee toda la memoria de la estructura a 0 y luego usaría otro contador el cual solo se incrementaría después de copiar una estructura válida y seria utilizado como indice de las válidas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de dotar

Arrays de estructuras

Publicado por dotar (15 intervenciones) el 11/02/2016 13:15:19
Gracias, cuando hablas del for te refieres al segundo ? Podrías poner una plantilla de como usar esas funcionalidades, nunca la he usado y me gustaría como implementarlas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Arrays de estructuras

Publicado por agustin (522 intervenciones) el 11/02/2016 16:26:49
http://c.conclase.net/librerias/?ansifun=memset
En tu caso sería:
1
2
memset(personValida,'\0',sizeof(personas)*50);
memset(personValida,'\0',sizeof(personValida);
No estoy totalmente seguro que ambos funcionen correctamente y tendrás que probarlo. Tienes que hacerlo antes de ningún for,después de declarar la variable por ejemplo.

http://c.conclase.net/librerias/?ansifun=memcpy
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar