
Dimensionar un vector dentro de un struct
Publicado por Jason (1 intervención) el 08/11/2014 20:36:15
Que tal chicos y chicas,disculpen la pregunta pero me puse ante los diversos casos en el manejo de structs y éste (que creo que es básico) no lo puedo hacer.
Mi pregunta es ¿cómo hago eso? el *primera que es de tipo persona lo transformamos en un vector dinámico, pero una vez hecho eso ¿Cómo transformo el puntero que ésta dentro de *primera en otro vector?
De antemano muchas gracias.
Por ahí como que funciona pero con errores. Por ejemplo hice esta cosa que tiene que imprimir por pantalla del 1 al 32, pero sólo imprime los últimos 4 números(29,30,31,32) ocho veces.
Y si le pongo un contador a primera (es decir no me compila, qué pasa?
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
43
#include <stdio.h>
typedef struct humano{
int *trabajos;
}persona;
int main(){
int i,j,cont=1;
int cantidad_personas=8;
int cantidad_trabajos=4;
persona *primera;
primera=(persona *)malloc(sizeof(persona)*cantidad_personas);
/* Hasta este punto por lo que entiendo hice un arreglo dinamico en donde
ubicamos a la persona en un espacio del arreglo*/
//Ahora bien cada persona tendrá más de un trabajo por lo cual el puntero
//trabajo (*trabajos) debemos convertirlo en un vector.
primera->trabajos=(int *)malloc(sizeof(int)*cantidad_trabajos);
for (i = 0; i < cantidad_personas; i++){
for (j = 0; j < cantidad_trabajos; j++){
primera->trabajos[j]=cont;
cont++;
}
}
for (i = 0; i < cantidad_personas; i++){
for (j = 0; j < cantidad_trabajos; j++){
printf("%d ",primera->trabajos[j]);
}
printf("\n");
}
return 0;
}
Mi pregunta es ¿cómo hago eso? el *primera que es de tipo persona lo transformamos en un vector dinámico, pero una vez hecho eso ¿Cómo transformo el puntero que ésta dentro de *primera en otro vector?
De antemano muchas gracias.
Por ahí como que funciona pero con errores. Por ejemplo hice esta cosa que tiene que imprimir por pantalla del 1 al 32, pero sólo imprime los últimos 4 números(29,30,31,32) ocho veces.
Y si le pongo un contador a primera (es decir
1
primera[i]->
Valora esta pregunta


0