Definición del Programa
El programa está diseñado para gestionar información de empleados, incluyendo su nombre, dirección, ciudad, colonia y salario. Se utilizan dos estructuras: una para almacenar la dirección (info_direccion) y otra para almacenar la información del empleado (empleado), que incluye una instancia de info_direccion.
Código:
#include <iostream>
#include <conio.h>
using namespace std;
// Definición de la estructura para la dirección
struct info_direccion {
char direccion[30];
char ciudad[20];
char colonia[20];
};
// Definición de la estructura para el empleado
struct empleado {
char nombre[20];
struct info_direccion dir_empleado; // Estructura anidada
double salario;
} empleado[2]; // Arreglo de estructuras empleado
// Función principal
int main() {
cout << "Programa para anidar, pedir, almacenar, y mostrar estructuras:" << endl;
cout << "-------------------------------------------------------------" << endl << endl;
// Pedir datos y almacenar con un bucle
for (int i = 0; i < 2; i++) {
// Limpiar el buffer de entrada
fflush(stdin);
// Entrada de datos para cada empleado
cout << "Digite su nombre: ";
cin.getline(empleado[i].nombre, 20, '\n');
cout << "Digite su direccion: ";
cin.getline(empleado[i].dir_empleado.direccion, 30, '\n');
cout << "Digite su ciudad: ";
cin.getline(empleado[i].dir_empleado.ciudad, 20, '\n');
cout << "Digite su colonia: ";
cin.getline(empleado[i].dir_empleado.colonia, 20, '\n');
cout << "Digite su salario: ";
cin >> empleado[i].salario;
cout << "\n";
// Limpiar el buffer de entrada después de leer el salario
fflush(stdin);
}
// Mostrar los datos de los empleados
for (int i = 0; i < 2; i++) {
cout << "Nombre: " << empleado[i].nombre << endl;
cout << "Dirección: " << empleado[i].dir_empleado.direccion << endl;
cout << "Ciudad: " << empleado[i].dir_empleado.ciudad << endl;
cout << "Colonia: " << empleado[i].dir_empleado.colonia << endl;
cout << "Salario: " << empleado[i].salario << endl;
cout << "\n\n";
}
getch(); // Espera a que el usuario presione una tecla
return 0;
}
Explicación del Código
Definición de Estructuras:
info_direccion: Estructura que contiene los campos para almacenar la dirección, ciudad y colonia.empleado: Estructura que incluye el nombre del empleado, una instancia deinfo_direccionpara la dirección, y el salario del empleado. Se declara un arreglo de dosempleadospara almacenar la información de dos empleados.
Entrada de Datos:
- Se utiliza un bucle
forpara leer los datos de dos empleados. Para cada empleado, se piden los datos del nombre, dirección, ciudad, colonia y salario. La funciónfflush(stdin)se usa para limpiar el buffer de entrada, asegurando que no queden datos no deseados entre las entradas.
- Se utiliza un bucle
Mostrar Datos:
- Otro bucle
forrecorre el arreglo de empleados y muestra la información almacenada en cada estructura.
- Otro bucle
Notas Adicionales:
cin.getlinese usa para leer cadenas de texto con espacios, ycinse usa para leer valores numéricos como el salario.fflush(stdin)es utilizado para limpiar el buffer de entrada después de leer el salario, evitando problemas con la lectura de datos subsiguientes.
Ventajas de Usar Estructuras Anidadas
- Organización: Agrupa datos relacionados en una sola estructura, haciendo que el código sea más organizado y fácil de entender.
- Modularidad: Facilita la reutilización de estructuras en diferentes contextos y escenarios.
- Claridad: Mejora la legibilidad del código al representar datos complejos de manera estructurada.