Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OBJETIVO:
• Crear nuevos tipos de datos haciendo uso de arreglo de estructuras.
Arreglo de estructuras
Matriz de estructuras o matriz de registros, son matrices cuyos elementos son de algún tipo de
estructura.
Para definir una matriz de estructuras, es necesario declarar un tipo de estructura que coincida
con el tipo de los elementos de la matriz.
struct alumno
{
long matricula;
char apellidos[100]; char
nombres[100]; struct
date fechaNac; enum
carrera car; float
promedio;
char direccion[100];
};
matricul apellidos nombre fechaNa ca promedio direccio matricul apellidos nombre fechaNac …
a s c r n
a s
est[0] est[1
]
Ejercicio resuelto # 1
El programa presentado a continuación, lee del teclado los datos de un arreglo de estructuras
de tipo “struct alumno” y los visualiza, haciendo uso de una estructura anidada para
almacenar la fecha de nacimiento.
/*alumnoEstructuraAnidadaArray.c*/
struct date
{
int dia, mes, anyo;
};
struct alumno
{
long matricula;
char apellidos[100]; char
nombres[100]; struct
date fechaNac; enum
carrera car; float
promedio;
char direccion[100];
};
int main()
{
struct alumno est[100];
int i,N;
printf("\nDatos de cuántos estudiantes desea introducir?:");
scanf("%d",&N);
for(i = 1; i <= N; i++)
{
printf("\nDatos del estudiante #%d:\n",i);
printf("-----------------------\n");
fflush(stdin);
printf("Ingrese el número de matrícula del alumno(entero largo):");
scanf("%ld",&est[i].matricula);
fflush(stdin);
printf("Ingrese los apellidos del alumno(cadena de caracteres):");
gets(est[i].apellidos);
fflush(stdin);
printf("Ingrese los nombres del alumno(cadena de caracteres):");
gets(est[i].nombres);
printf("Ingrese la fecha de nacimimiento(dd/mm/aa):");
scanf("%d/%d/%d",&est[i].fechaNac.dia, &est[i].fechaNac.mes, &est[i].fechaNac.anyo);
fflush(stdin);
printf("\nCarrera del alumno(entero):");
printf("\nSistemas = 1\n");
printf("Telematicas = 2\n"); printf("Biologia =
3\n"); printf("Quimica = 4\n");
printf("Matematicas = 5\n");
printf("Introduzca el numero que corresponde a la carrera:\n");
scanf("%d",&est[i].car);
fflush(stdin);
printf("Promedio del alumno(real):");
scanf("%f",&est[i].promedio);
fflush(stdin);
printf("Dirección del alumno(cadena de caracteres):");
gets(est[i].direccion);
}
M.Sc. Ana María Salgado Grillo Página 4
Universidad Nacional Autónoma de Nicaragua, León.
Facultad Ciencias y Tecnología. Departamento de Computación.
Laboratorio de Programación Estructurada
Guía #13: Declaración de tipos propios (Estructuras)
system("pause");
system("cls");
for(i = 1; i <= N; i++)
{
printf("\n\nDatos del aprendiente #%d:\n",i);
printf("-----------------------\n");
printf("El estudiante con matricula %ld:",est[i].matricula); printf("%s
%s",est[i].apellidos, est[i].nombres); printf("\nCon fecha de
nacimimiento: ");
printf("%d/%d/%d",est[i].fechaNac.dia, est[i].fechaNac.mes, est[i].fechaNac.anyo);
printf("\nEstudia la carrera : "); if(est[i]. car == 1)
printf("Sistemas\n"); if(est[i]. car == 2)
printf("Telematicas\n"); if(est[i]. car == 3) printf("Biologia\
n"); if(est[i]. car == 4)
printf("Quimica\n");
if(est[i]. car == 5)
printf("Matematicas\n");
printf("Con un promedio de : %.2f",est[i].promedio);
printf("\nVive en:%s", est[i].direccion);
}
return 0;
}
Salida en pantalla:
Ejercicio resuelto # 2
Leer 10 estructuras del arreglo de tipo "empleado" que contiene la siguiente información:
• nombre
• dirección (numCasa, barrio, ciudad) edad
• sexo (M = masculino, F = femenino)
a) listar los empleados menores de 35 años
b) listar los empleados que viven en el barrio Subtiava
c) listar los empleados que viven en el barrio Subtiava y son menores de 35 años
Solución:
/*empleadoEstructuraArray.cpp*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
int numCasa;
char barrio[50];
char ciudad[50];
}adress;
typedef struct
{
char nombre[100];
adress direccion; int
edad; char sexo;
}empleado;
int main()
{
empleado e[10];
int i,N;
printf("\nDatos de cuantos empleados desea introducir?: ");
scanf("%d",&N);
for(i = 0; i < N; i++)
{
printf("\nDatos del empleado #%d:\n",i+1);
printf("-----------------------\n");
fflush(stdin);
printf("Ingrese el nombre: ");
gets(e[i].nombre); fflush(stdin);
printf("Ingrese la direccion...");
printf("\nNumero de casa: ");
scanf("%d",&e[i].direccion.numCasa);
fflush(stdin);
printf("Barrio?: ");
gets(e[i].direccion.barrio); fflush(stdin);
printf("Ciudad?: ");
gets(e[i].direccion.ciudad);
fflush(stdin);
fflush(stdin);
printf("\nSexo(M/F)...: ");
e[i].sexo = getchar();
}
system("pause");
system("cls");
return 0;
}
Salida en pantalla:
Ejercicios propuestos
Dato:
• CLI[N] (donde CLI es un arreglo unidimensional de tipo estructuras CLIENTE de N
elementos, 1<= N <= 100).
Nota: El programa debe realizar y validar diferentes transacciones. El fin de datos se expresa al
ingresar el número 0.
Dato:
• ESCUELA[N] (donde ESCUELA es un arreglo unidimensional de tipo estructura Alumno, 1
<=N <=1000).
M.Sc. Ana María Salgado Grillo Página 15
Universidad Nacional Autónoma de Nicaragua, León.
Facultad Ciencias y Tecnología. Departamento de Computación.
Laboratorio de Programación Estructurada
Guía #13: Declaración de tipos propios (Estructuras)