PREGUNTA: Para declarar un registro con variantes:
a) Uno de los campos del tipo struct debe ser un tipo union
b) Uno de los campos del tipo union debe ser un tipo struct
c) Todos los campos del tipo struct deben ser un tipo union
d) Todos los campos del tipo union debe ser un tipo struct
RESPUESTA: la opción correcta es la a)
Un tipo union se puede introducir dentro de un tipo struct y a esto se le denomina registro con variantes.
El tipo union permite declarar un tipo donde existe un campo indicador de qué variante de las previstas es la actual en un momento dado. Ejemplo: declaramos un union como:
typedef union Numerico {
int entero;
float real;
};
Además declaramos otro tipo: typedef char TipoCadena[40];
Luego declaramos un registro con variantes por ejemplo:
Typedef struct Parametro {
Numerico valorNumerico;
TipoCadena valorCadena;
}
En el registro con variantes, uno de los campos del struct es de tipo union. Un poco de trabalenguas…
(http://www.ajedrezmostoles.com/wp-content/uploads/2011/10/parte-contratante.jpg)
PREGUNTA: ¿Cuál de los siguientes órdenes de complejidad de crecimiento asintótico es más eficiente?
a) O(log n)
b) O(n log n)
c) 0(n2 )
d) O(2n)
RESPUESTA: la respuesta correcta es la a). Hay que tener en cuenta que el orden de complejidad indica cómo crece el coste computacional (normalmente medido en términos de tiempo que se requiere para ejecutar un algoritmo a medida que crece el tamaño de datos de entrada). El peor coste posible entre las opciones que se dan es el exponencial de la opción d, seguido por el cuadrático de la opción c y luego por el n-logarítmico de la opción b. El mejor coste entre los indicados es el logarítmico. Este indica que el coste de computación crece logarítmicamente con el tamaño del problema n.
(http://artemisa.unicauca.edu.co/~nediaz/EDDI/img/comparacion.gif)