#include struct rep_fecha { unsigned int f; }; typedef rep_fecha* TFecha; // Devuelve una fecha con dia d, mes m y año a TFecha crear_fecha(unsigned int d, unsigned int m, unsigned int a) { TFecha fecha = new rep_fecha; fecha->f = 10000 * a + 100 * m + d; return fecha; } // Devuelve true si f1 es anterior a f2, false en otro caso bool comparar_fechas(TFecha f1, TFecha f2) { return f1->f < f2->f; } // Devuelve el día correspondiente a fecha unsigned int dia(TFecha fecha) { return fecha->f % 100; } // Devuelve el mes correspondiente a fecha unsigned int mes(TFecha fecha) { return (fecha->f / 100) % 100; } // Devuelve el año correspondiente a fecha unsigned int anio(TFecha fecha) { return fecha->f / 10000; } int main() { unsigned int n = 3; TFecha fechas[n]; fechas[0] = crear_fecha(10, 10, 2022); fechas[1] = crear_fecha(15, 5, 2022); fechas[2] = crear_fecha(20, 11, 1992); int i, j, min_idx; for (i = 0; i < n - 1; i++) { min_idx = i; for (j = i + 1; j < n; j++) { if (comparar_fechas(fechas[j], fechas[min_idx])) min_idx = j; } TFecha aux = fechas[min_idx]; fechas[min_idx] = fechas[i]; fechas[i] = aux; } for (unsigned int i = 0; i < n; i++) { printf("%d/%d/%d\n", dia(fechas[i]), mes(fechas[i]), anio(fechas[i])); delete fechas[i]; // Liberar memoria asignada dinámicamente } return 0; }