UNIVERSIDAD AUTÓNOMA DE BAJA
CALIFORNIA
FACULTAD DE INGENIERÍA MEXICALI
Materia: Programación Estructurada
Carrera: Lic. Sistemas computacionales
Matricula: 1195445
Nombre: Juan Daniel Gaspar Tinoco
Semestre: 2024-3
Tema: Arreglos de estructuras
Objetivo (competencia)
Elaborar programas de cómputo aplicando el uso de arreglos de estructuras por medio de
ejercicios propuestos, para optimizar la programación de los mismos, con una actitud analítica y
comprometida
Descripción
Una estructura es una colección de variables las cuales están relacionadas bajo un nombre. Las estructuras
son del tipo de datos compuestos que pueden contener variables de tipos diferentes de datos a diferencia
de los arreglos que también son del tipo de datos compuestos pero que contienen únicamente elementos
de un mismo tipo de dato
Programa 1
Código
main.c
#include <stdio.h>
#include "funciones.h"
int main() {
int opcion;
do {
printf("\n--- MENU ---\n");
printf("1. Alta del cliente\n");
printf("2. Mostrar clientes\n");
printf("3. Buscar a un cliente\n");
printf("4. Ordenar los registros\n");
printf("5. Borrar un registro\n");
printf("6. Salir\n");
printf("Ingrese la opción deseada: ");
scanf("%d", &opcion);
switch (opcion) {
case 1:
altaCliente();
break;
case 2:
mostrarClientes();
break;
case 3:
buscarCliente();
break;
case 4:
ordenarRegistros();
break;
case 5:
borrarRegistro();
break;
case 6:
printf("Saliendo del programa...\n");
break;
default:
printf("Opción no válida. Intente nuevamente.\n");
break;
} while (opcion != 6);
return 0;
}
funciones.c
#include <stdio.h>
#include <string.h>
#include "funciones.h"
Cliente arr_clientes[MAX_CLIENTES];
Tarjeta arr_tarjetas[MAX_CLIENTES];
int contador_clientes = 0;
void altaCliente() {
if (contador_clientes >= MAX_CLIENTES) {
printf("No se pueden agregar más clientes. Se ha alcanzado el límite máximo.\n");
return;
printf("Ingrese el nombre del cliente: ");
scanf("%s", arr_clientes[contador_clientes].nombre);
printf("Ingrese el domicilio del cliente: ");
scanf("%s", arr_clientes[contador_clientes].domicilio);
printf("Ingrese el teléfono de casa del cliente: ");
scanf("%s", arr_clientes[contador_clientes].telefono_casa);
printf("Ingrese el teléfono de trabajo del cliente: ");
scanf("%s", arr_clientes[contador_clientes].telefono_trabajo);
printf("Ingrese el teléfono celular del cliente: ");
scanf("%s", arr_clientes[contador_clientes].telefono_celular);
printf("Ingrese el número de tarjeta del cliente: ");
scanf("%s", arr_tarjetas[contador_clientes].numero);
printf("Ingrese el tipo de tarjeta del cliente (débito o crédito): ");
scanf("%s", arr_tarjetas[contador_clientes].tipo);
printf("Ingrese la fecha de vencimiento de la tarjeta (mm/aaaa): ");
scanf("%s", arr_tarjetas[contador_clientes].fecha_vencimiento);
contador_clientes++;
printf("Cliente agregado con éxito.\n");
void mostrarClientes() {
if (contador_clientes == 0) {
printf("No hay clientes registrados.\n");
return;
printf("--- LISTADO DE CLIENTES ---\n");
for (int i = 0; i < contador_clientes; i++) {
printf("Nombre: %s\n", arr_clientes[i].nombre);
printf("Domicilio: %s\n", arr_clientes[i].domicilio);
printf("Teléfono de casa: %s\n", arr_clientes[i].telefono_casa);
printf("Teléfono de trabajo: %s\n", arr_clientes[i].telefono_trabajo);
printf("Teléfono celular: %s\n", arr_clientes[i].telefono_celular);
printf("Número de tarjeta: %s\n", arr_tarjetas[i].numero);
printf("Tipo de tarjeta: %s\n", arr_tarjetas[i].tipo);
printf("Fecha de vencimiento: %s\n", arr_tarjetas[i].fecha_vencimiento);
printf("--------------------------\n");
void buscarCliente() {
if (contador_clientes == 0) {
printf("No hay clientes registrados.\n");
return;
}
char nombre[MAX_NOMBRE];
printf("Ingrese el nombre del cliente a buscar: ");
scanf("%s", nombre);
int encontrado = 0;
for (int i = 0; i < contador_clientes; i++) {
if (strcmp(arr_clientes[i].nombre, nombre) == 0) {
printf("Cliente encontrado:\n");
printf("Nombre: %s\n", arr_clientes[i].nombre);
printf("Domicilio: %s\n", arr_clientes[i].domicilio);
printf("Teléfono de casa: %s\n", arr_clientes[i].telefono_casa);
printf("Teléfono de trabajo: %s\n", arr_clientes[i].telefono_trabajo);
printf("Teléfono celular: %s\n", arr_clientes[i].telefono_celular);
printf("Número de tarjeta: %s\n", arr_tarjetas[i].numero);
printf("Tipo de tarjeta: %s\n", arr_tarjetas[i].tipo);
printf("Fecha de vencimiento: %s\n", arr_tarjetas[i].fecha_vencimiento);
printf("--------------------------\n");
encontrado = 1;
break;
if (!encontrado) {
printf("El cliente no se encuentra registrado.\n");
void ordenarRegistros() {
if (contador_clientes == 0) {
printf("No hay clientes registrados.\n");
return;
void borrarRegistro() {
if (contador_clientes == 0) {
printf("No hay clientes registrados.\n");
return;
char nombre[MAX_NOMBRE];
printf("Ingrese el nombre del cliente a borrar: ");
scanf("%s", nombre);
int encontrado = 0;
for (int i = 0; i < contador_clientes; i++) {
if (strcmp(arr_clientes[i].nombre, nombre) == 0) {
for (int j = i; j < contador_clientes - 1; j++) {
arr_clientes[j] = arr_clientes[j + 1];
arr_tarjetas[j] = arr_tarjetas[j + 1];
contador_clientes--;
encontrado = 1;
printf("Cliente borrado con éxito.\n");
break;
if (!encontrado) {
printf("El cliente no se encuentra registrado.\n");
}
}
funciones.h
#ifndef FUNCIONES_H
#define FUNCIONES_H
#define MAX_CLIENTES 500
#define MAX_NOMBRE 50
#define MAX_DOMICILIO 100
#define MAX_TELEFONO 15
#define MAX_NUM_TARJETA 20
#define MAX_FECHA_VENCIMIENTO 10
typedef struct {
char nombre[MAX_NOMBRE];
char domicilio[MAX_DOMICILIO];
char telefono_casa[MAX_TELEFONO];
char telefono_trabajo[MAX_TELEFONO];
char telefono_celular[MAX_TELEFONO];
} Cliente;
typedef struct {
char numero[MAX_NUM_TARJETA];
char tipo[8];
char fecha_vencimiento[MAX_FECHA_VENCIMIENTO];
} Tarjeta;
extern Cliente arr_clientes[MAX_CLIENTES];
extern Tarjeta arr_tarjetas[MAX_CLIENTES];
extern int contador_clientes;
void altaCliente();
void mostrarClientes();
void buscarCliente();
void ordenarRegistros();
void borrarRegistro();
#endif
Ejecución
En conclusión
Después de haber desarrollado y ejecutado el programa de registro
de clientes para un banco, puedo concluir que esta práctica ha sido
muy útil para entender cómo trabajar con arreglos paralelos y
estructuras en el lenguaje de programación C. Al implementar las
diferentes funcionalidades solicitadas, como la alta de clientes, la
visualización de clientes, la búsqueda, la ordenación y el borrado de
registros, pude practicar y comprender mejor los conceptos de
manipulación de datos y gestión de registros.