/* --------------------------------------------- */ /* Ejemplos de trabajo con estructuras Complejas */ /* --------------------------------------------- */ #include #define MAXPUNT 10 typedef enum {BLANCO,NEGRO,ROJO,VERDE,AMARILLO,MARRON,AZUL,GRIS} COLORES; /* Estructura compuesta con dos campos simples */ struct SPunto { short x; short y; }; /* Estructura compuesta con campos simples y una tabla de MAXPUNT estructuras de puntos */ struct SLinea { COLORES color; short numpuntos; struct SPunto pun[MAXPUNT]; }; /* Estructura de un dibujo que contiene una linea */ struct SDibujo1 { char nombre[20]; struct SLinea linea; }; /* Estructura de un dibujo que contiene un puntero a una linea */ struct SDibujo2 { char nombre[20]; struct SLinea *plinea; }; /* Estructura de un dibujo que contiene una tabla con 5 lineas */ struct SDibujo3 { char nombre[20]; struct SLinea Tlineas[5]; }; /* Estructura de una dibujo que contiene una tabla con 5 punteros a lineas */ struct SDibujo4 { char nombre[20]; struct SLinea *TPlineas[5]; }; /* Estructura de un dibujo que guarda una tabla con un número no definido de punteros a lineas */ struct SDibujo5 { char nombre[20]; struct SLinea **TPlineas; }; // EL programa no hace "nada" solo muestra como se pueden usar // las estructuras anteriormente definidas void main() { struct SDibujo1 d1; struct SDibujo2 d2; struct SDibujo3 d3; struct SDibujo4 d4; struct SDibujo5 d5; struct SLinea la,lb,lc, *lt[10]; /* Tres líneas y una tabla de 10 líneas */ /* Asigno los punteros para poder utilizar la varibles */ // El puntero a linea de d2 señala a la linea la d2.plinea = & la; // El Primer puntero de la tabla señala a la linea lb d4.TPlineas[0] = & lb; // El puntero a la tabla de punteros de lineas señala a la tabla lt lt[0] = &lc; // Fijo un puntero de la tabla lt señalando a la linea lc d5.TPlineas = lt; // Asigno al tabla de punteros a lt /* Ejemplo de cambio de valores en la coordenada x del 3º Punto de la 1º Linea */ d1.linea.pun[2].x = 140; d2.plinea->pun[2].x = 140; d3.Tlineas[0].pun[2].x = 140; d4.TPlineas[0]->pun[2].x = 140; d5.TPlineas[0]->pun[2].x = 140; getchar(); }