Bueno pues me agarraste de buenas y me puse a resolver este problemita, aqui tienes el como lo hize, ESTUDIA el codigo y si tienes dudas hasmelas saber.
Código c:
Ver original#include <stdio.h>
#include <string.h>
#include <strings.h>
#include <stdlib.h>
#define COLS 20
int comparaFechas(char *fecha1, char *fecha2);
int ordenaArreglo(char (*fechas)[COLS], int limite);
int main(){
char (*FechasX)[COLS];
char (*FechasY)[COLS];
char (*FechasXY)[COLS];
int contador, contador2, pos;
int elementosX = 0, elementosY = 0;
int elementosXY = 0;
scanf("%i", &elementosX
);
scanf("%i", &elementosY
);
FechasX
= malloc(elementosX
* COLS
* sizeof(char)); FechasY
= malloc(elementosY
* COLS
* sizeof(char)); FechasXY
= malloc((elementosX
+ elementosY
) * COLS
* sizeof(char));
printf("===============================\n"); printf("Digita las fechas del arreglo X\n"); printf("===============================\n"); for(contador = 0; contador < elementosX; contador++){
bzero(FechasX[contador], sizeof(FechasX[contador]));
printf("FechasX[%i]: ", contador
); scanf("%s", FechasX
[contador
]); }
printf("===============================\n"); printf("Digita las fechas del arreglo Y\n"); printf("===============================\n"); for(contador = 0; contador < elementosY; contador++){
bzero(FechasY[contador], sizeof(FechasY[contador]));
printf("FechasY[%i]: ", contador
); scanf("%s", FechasY
[contador
]); }
printf("===============================\n"); printf("===============================\n"); ordenaArreglo(FechasX, elementosX);
printf("===============================\n"); printf("===============================\n"); ordenaArreglo(FechasY, elementosY);
printf("===============================\n"); printf("Mostrando Elementos Ordenados X\n"); printf("===============================\n"); for(contador = 0; contador < elementosX; contador++){
printf("FechasX[%i]: %s\n", contador
, FechasX
[contador
]); }
printf("===============================\n"); printf("Mostrando Elementos Ordenados Y\n"); printf("===============================\n"); for(contador = 0; contador < elementosY; contador++){
printf("FechasY[%i]: %s\n", contador
, FechasY
[contador
]); }
elementosXY = elementosX + elementosY;
contador = 0;
contador2 = 0;
pos = 0;
while(pos < elementosXY){
if(contador < elementosX && contador2 < elementosY){
if(comparaFechas(FechasX[contador], FechasY[contador2]) <= 0){
bzero((char *)&FechasXY[pos], sizeof(FechasXY[pos]));
strcpy(FechasXY
[pos
++], FechasX
[contador
++]); }
else{
bzero((char *)&FechasXY[pos], sizeof(FechasXY[pos]));
strcpy(FechasXY
[pos
++], FechasY
[contador2
++]); }
}
if(contador == elementosX){
bzero((char *)&FechasXY[pos], sizeof(FechasXY[pos]));
strcpy(FechasXY
[pos
++], FechasY
[contador2
++]); }
if(contador2 == elementosY){
bzero((char *)&FechasXY[pos], sizeof(FechasXY[pos]));
strcpy(FechasXY
[pos
++], FechasX
[contador
++]); }
}
printf("=======================================\n"); printf("Mostrando Todos loe Elementos ordenados\n"); printf("=======================================\n"); for(contador = 0; contador < elementosXY; contador++){
printf("FechasXY[%i]: %s\n", contador
, FechasXY
[contador
]); }
return 0;
}
int comparaFechas(char *fecha1, char *fecha2){
int anio1 = 0, anio2 = 0;
int mes1 = 0, mes2 = 0;
int dia1 = 0, dia2 = 0;
sscanf(fecha1
, "[%d][%d][%d]", &dia1
, &mes1
, &anio1
); sscanf(fecha2
, "[%d][%d][%d]", &dia2
, &mes2
, &anio2
); if(anio1 == anio2)
if(mes1 == mes2)
return dia1 - dia2;
else
return mes1 - mes2;
else
return anio1 - anio2;
return 0;
}
int ordenaArreglo(char (*fechas)[COLS], int limite){
char temp[COLS];
char temp2[COLS];
int contador, pibote;
for(pibote = 0; pibote < (limite - 1); pibote++){
for(contador = pibote; contador < (limite - 1); contador++){
if(comparaFechas(fechas[contador], fechas[contador + 1]) > 0){
bzero((char *)&temp, sizeof(temp));
bzero((char *)&temp2, sizeof(temp2));
strcpy(temp
, fechas
[contador
]); strcpy(temp2
, fechas
[contador
+ 1]); strcpy(fechas
[contador
+ 1], temp
); strcpy(fechas
[contador
], temp2
); }
}
}
return 0;
}
Mi salida
Código:
Elementos X: 2
Elementos Y: 2
===============================
Digita las fechas del arreglo X
===============================
FechasX[0]: [16][9][2000]
FechasX[1]: [15][9][2000]
===============================
Digita las fechas del arreglo Y
===============================
FechasY[0]: [13][9][2000]
FechasY[1]: [11][9][2000]
===============================
Ordenando X
===============================
===============================
Ordenando Y
===============================
===============================
Mostrando Elementos Ordenados X
===============================
FechasX[0]: [15][9][2000]
FechasX[1]: [16][9][2000]
===============================
Mostrando Elementos Ordenados Y
===============================
FechasY[0]: [11][9][2000]
FechasY[1]: [13][9][2000]
=======================================
Mostrando Todos loe Elementos ordenados
=======================================
FechasXY[0]: [11][9][2000]
FechasXY[1]: [13][9][2000]
FechasXY[2]: [15][9][2000]
FechasXY[3]: [16][9][2000]