| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
peta555
Registrado: 07 Jul 2014 Mensajes: 3
| Publicado: 23/07/2014 2:18 am | | | Título: inicializar estruct anidadada |
| hola a todos hace unos dias me ayudasteis a resolver una duda sobre una estructura anidada (muchas gracias al compañero vangodp): http://www.elrincondelc.com/nuevorincon/foros/viewtopic.php?t=21142
ahora estoy intentando hacer lo mismo pero inicializando con datos la estructura anidada, pero no doy con la forma de hacerlo. creo que el fallo esta en como introducir los datos en cada estructura, que luego se mostraran por pantalla:
#include <stdio.h> #include <conio.h>
struct estruc_existencias { int discos; int cintas; int cd; };
struct estruc_proveedor { char nombre_proveedor[40]; char telefono_proveedor[10]; char direccion_proveedor[100]; };
struct estruc_inventario { char titulo[30]; char autor[40]; struct estruc_existencias existencias; struct estruc_proveedor proveedor; }inventario;
int main() { struct estruc_existencias existencias = { { 10, 20, 30 }, /* Iron Maiden */ { 60, 70, 80 } /* AC/DC */ }; /*se introducen asi los datos?? */
struct estruc_proveedor proveedor[] = { { "Juanjo Lopez", "504-4342", "Barcelona" }, /* Iron Maiden */ { "Marcos Gamindez", "405-4823", "Madrid" }, /* AC/DC */ }; /*se introducen asi los datos?? */
struct estruc_inventario inventario[] = { { "The Number of the Beast", "Iron Maiden", &existencias, &proveedor }, /* DUDAS: &existencias, &proveedor ¿¿se pone asi ?? */ { "The Razors Edge", "AC/DC", &existencias, &proveedor } }; /*se introducen asi los datos?? */
int i; for( i=0; i<2; i++ ) { printf( "%s\n ", inventario[i].existencias.discos ); printf( "%s\n ", inventario[i].existencias.cintas ); printf( "%s\n ", inventario[i].existencias.cd );
printf( "%s\n ", inventario[i].proveedor.nombre_proveedor ); printf( "%s\n ", inventario[i].proveedor.telefono_proveedor ); printf( "%s\n ", inventario[i].proveedor.direccion_proveedor );
printf( "%s\n ", inventario[i].titulo ); printf( "%s\n ", inventario[i].autor ); }
getch(); return 0; }
haber si alguien me puede ayudar, como ya he dicho creo que estoy fallando en como introducir los datos dentro de cada estructura.
saludos y gracias de antemano |
| | Volver arriba | |  | vangodp
Registrado: 25 Ene 2014 Mensajes: 38
| Publicado: 23/07/2014 6:05 pm | | | Título: |
| Una buena forma seria usando Typedefs por que facilita a la hora de acceder a los datos seria algo tan sencillo como: IronMaiden.cantidad.cds;
¿Chupi no?
te dejo un par de ejemplos:
| Código: | #include <stdio.h>
//una buena forma seria usando typedef struct: typedef struct{ int discos; int cintas; int cds }CANTIDAD;
typedef struct{ CANTIDAD cantidad; //anidada... "CANTIDAD" esta definida por tipo como }EXISTENCIAS;
int main() { EXISTENCIAS IronMaiden = { 10, 20, 30 }; //1º discos, 2º cintas y 3º cds EXISTENCIAS ACDC = { 60, 70, 80 }; printf("Iron Maiden:\n\n"); printf( "Discos:\t\t%d\n", IronMaiden.cantidad.discos ); printf( "Cintas:\t\t%d\n", IronMaiden.cantidad.cintas ); printf( "CompactDiscs:\t%d", IronMaiden.cantidad.cds );
printf("\n\n===================\n\n"); printf("AC/DC:\n\n"); printf( "Discos:\t\t%d\n", ACDC.cantidad.discos ); printf( "Cintas:\t\t%d\n", ACDC.cantidad.cintas ); printf( "CompactDiscs:\t%d", ACDC.cantidad.cds ); getchar(); return 0; }
|
Otro ejemplo:
| Código: | #include <stdio.h>
struct DATOS{ char nombre[30]; int ndiscos; };
struct EXISTENCIAS{ struct DATOS banda1; struct DATOS banda2; };
int main() { struct EXISTENCIAS existencias={ { "Iron Maiden", 10 }, { "AC/CD" , 20 } }; //Ahora debes tener claro que hay 2 objetos tipos datos dentro de la extructura "EXISTENCIAS"... //...(banda1 y banda2) cada uno contiene una estructura tipo DATOS que contiene nombre y numerodiscos //La forma de acceder a los datos de iron maiden son: printf("Nombre banda: \t\t%s \nCantidad de discos: \t%d", existencias.banda1.nombre, existencias.banda1.ndiscos); getchar(); //No uses conio.h solo para pausar por que es un disparate "Mejor no uses nunca a conio XD" return 0; }
|
Espero que te sirva. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |