Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda para ordenar fechas de nacimiento en c

Estas en el tema de ayuda para ordenar fechas de nacimiento en c en el foro de C/C++ en Foros del Web. Ola espero que me puedan ayudar plis lo que pasa es que necesito hacer un programa en c , que sea asi en dos arreglos ...
  #1 (permalink)  
Antiguo 26/10/2010, 15:57
 
Fecha de Ingreso: octubre-2010
Mensajes: 4
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta ayuda para ordenar fechas de nacimiento en c

Ola espero que me puedan ayudar plis lo que pasa es que necesito hacer un programa en c , que sea asi

en dos arreglos x e y ingresar fechas con el siguiente formato [15][07][1980]

1° llenar X e Y
2° ordenar cada uno de los arreglos con las fechas de menor a mayor año
3° por ultimo mezclar los dos arreglos ordenando todas las fechas por orden de menor a mayor año


espero me puedan a yudar plisss !!!!!
  #2 (permalink)  
Antiguo 26/10/2010, 16:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: ayuda para ordenar fechas de nacimiento en c

Hola, primero hasta que cantidad de fechas vas a ingresar, por que tu arreglo puede tener "X" cantidad de datos. y no sabras hasta donde terminar de ingresar en tu arreglo x y y.
  #3 (permalink)  
Antiguo 26/10/2010, 17:00
 
Fecha de Ingreso: octubre-2010
Mensajes: 4
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: ayuda para ordenar fechas de nacimiento en c

Me tiene que preguntar cuantas fechas voy a ingresar en cada arreglo, osea n, espero me ayudes
  #4 (permalink)  
Antiguo 26/10/2010, 17:04
 
Fecha de Ingreso: octubre-2010
Mensajes: 4
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: ayuda para ordenar fechas de nacimiento en c

Cita:
Iniciado por vnvnation Ver Mensaje
Hola, primero hasta que cantidad de fechas vas a ingresar, por que tu arreglo puede tener "X" cantidad de datos. y no sabras hasta donde terminar de ingresar en tu arreglo x y y.

Me tiene que preguntar cuantas fechas voy a ingresar en cada arreglo, osea n, espero me ayudes
  #5 (permalink)  
Antiguo 26/10/2010, 18:13
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: ayuda para ordenar fechas de nacimiento en c

Aver si entendi implemente algo sencillo nada mas para que te diga el Num de fechas que vas a ingresar y despues introduces las fechas en tu arreglo X,no complemente por que no tengo una idea clara de como tu lo estes haciendo

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3.  
  4. main ()
  5. {
  6.  char X[999999],Y[100],j;
  7.  int i=0;
  8.  
  9. cout<<"Cuantas fechas quiere ingresar:";
  10. cin>> i;
  11. fflush( stdin );
  12. for(j=1;j<=i;j++)
  13.  
  14. {
  15. cout<<"Ingrese una fecha: ";
  16. gets(X);
  17. }
  18. getch ();
  19. }
  #6 (permalink)  
Antiguo 26/10/2010, 21:12
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: ayuda para ordenar fechas de nacimiento en c

Yo pensaria como porder representar una fecha. Si utilizas C haria una estructura:

struct fecha
{
int dia,mes,anio;
}

Si estas en c++ lo podrias hacer con objetos, que va a ser mucho mas comodo.

Luego haria una funcion que compare una fecha con otra, y diga cual es la menor. Esto simplemente comparas cual tiene el año mas chico, sino sigues con el mes, y si coiciden comparas los dias.

Por ultimo tienes un monton de algoritmo de ordenamientos. Con tu funcion que los comparas no deberia ser dificil!!!
  #7 (permalink)  
Antiguo 27/10/2010, 17:59
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 6 meses
Puntos: 9
Respuesta: ayuda para ordenar fechas de nacimiento en c

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
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <strings.h>
  4. #include <stdlib.h>
  5.  
  6. #define COLS 20
  7.  
  8. int comparaFechas(char *fecha1, char *fecha2);
  9. int ordenaArreglo(char (*fechas)[COLS], int limite);
  10.  
  11. int main(){
  12.     char (*FechasX)[COLS];
  13.     char (*FechasY)[COLS];
  14.     char (*FechasXY)[COLS];
  15.     int contador, contador2, pos;
  16.     int elementosX = 0, elementosY = 0;
  17.     int elementosXY = 0;
  18.  
  19.     printf("Elementos X: ");
  20.     scanf("%i", &elementosX);
  21.     while(getchar() != '\n');
  22.  
  23.     printf("Elementos Y: ");
  24.     scanf("%i", &elementosY);
  25.     while(getchar() != '\n');
  26.  
  27.     FechasX = malloc(elementosX * COLS * sizeof(char));
  28.     FechasY = malloc(elementosY * COLS * sizeof(char));
  29.     FechasXY = malloc((elementosX + elementosY) * COLS * sizeof(char));
  30.  
  31.     printf("===============================\n");
  32.     printf("Digita las fechas del arreglo X\n");
  33.     printf("===============================\n");
  34.     for(contador = 0; contador < elementosX; contador++){
  35.         bzero(FechasX[contador], sizeof(FechasX[contador]));
  36.         printf("FechasX[%i]: ", contador);
  37.         scanf("%s", FechasX[contador]);
  38.         while(getchar() != '\n');
  39.     }
  40.  
  41.     printf("===============================\n");
  42.     printf("Digita las fechas del arreglo Y\n");
  43.     printf("===============================\n");
  44.     for(contador = 0; contador < elementosY; contador++){
  45.         bzero(FechasY[contador], sizeof(FechasY[contador]));
  46.         printf("FechasY[%i]: ", contador);
  47.         scanf("%s", FechasY[contador]);
  48.         while(getchar() != '\n');
  49.     }
  50.  
  51.     printf("===============================\n");
  52.     printf("Ordenando X\n");
  53.     printf("===============================\n");
  54.     ordenaArreglo(FechasX, elementosX);
  55.     printf("===============================\n");
  56.     printf("Ordenando Y\n");
  57.     printf("===============================\n");
  58.     ordenaArreglo(FechasY, elementosY);
  59.  
  60.     printf("===============================\n");
  61.     printf("Mostrando Elementos Ordenados X\n");
  62.     printf("===============================\n");
  63.     for(contador = 0; contador < elementosX; contador++){
  64.         printf("FechasX[%i]: %s\n", contador, FechasX[contador]);
  65.     }
  66.  
  67.     printf("===============================\n");
  68.     printf("Mostrando Elementos Ordenados Y\n");
  69.     printf("===============================\n");
  70.     for(contador = 0; contador < elementosY; contador++){
  71.         printf("FechasY[%i]: %s\n", contador, FechasY[contador]);
  72.     }
  73.  
  74.     elementosXY = elementosX + elementosY;
  75.  
  76.     contador = 0;
  77.     contador2 = 0;
  78.     pos = 0;
  79.     while(pos < elementosXY){
  80.         if(contador < elementosX && contador2 < elementosY){
  81.             if(comparaFechas(FechasX[contador], FechasY[contador2]) <= 0){
  82.                 bzero((char *)&FechasXY[pos], sizeof(FechasXY[pos]));
  83.                 strcpy(FechasXY[pos++], FechasX[contador++]);
  84.             }
  85.             else{
  86.                 bzero((char *)&FechasXY[pos], sizeof(FechasXY[pos]));
  87.                 strcpy(FechasXY[pos++], FechasY[contador2++]);
  88.             }
  89.         }
  90.         if(contador == elementosX){
  91.             bzero((char *)&FechasXY[pos], sizeof(FechasXY[pos]));
  92.             strcpy(FechasXY[pos++], FechasY[contador2++]);
  93.         }
  94.         if(contador2 == elementosY){
  95.             bzero((char *)&FechasXY[pos], sizeof(FechasXY[pos]));
  96.             strcpy(FechasXY[pos++], FechasX[contador++]);
  97.         }
  98.     }
  99.  
  100.     printf("=======================================\n");
  101.     printf("Mostrando Todos loe Elementos ordenados\n");
  102.     printf("=======================================\n");
  103.     for(contador = 0; contador < elementosXY; contador++){
  104.         printf("FechasXY[%i]: %s\n", contador, FechasXY[contador]);
  105.     }
  106.  
  107.     free(FechasX);
  108.     free(FechasY);
  109.     free(FechasXY);
  110.     return 0;
  111. }
  112.  
  113. int comparaFechas(char *fecha1, char *fecha2){
  114.     int anio1 = 0, anio2 = 0;
  115.     int mes1 = 0, mes2 = 0;
  116.     int dia1 = 0, dia2 = 0;
  117.     sscanf(fecha1, "[%d][%d][%d]", &dia1, &mes1, &anio1);
  118.     sscanf(fecha2, "[%d][%d][%d]", &dia2, &mes2, &anio2);
  119.     if(anio1 == anio2)
  120.         if(mes1 == mes2)
  121.             return dia1 - dia2;
  122.         else
  123.             return mes1 - mes2;
  124.     else
  125.         return anio1 - anio2;
  126.  
  127.     return 0;
  128. }
  129.  
  130. int ordenaArreglo(char (*fechas)[COLS], int limite){
  131.     char temp[COLS];
  132.     char temp2[COLS];
  133.     int contador, pibote;
  134.     for(pibote = 0; pibote < (limite - 1); pibote++){
  135.         for(contador = pibote; contador < (limite - 1); contador++){
  136.             if(comparaFechas(fechas[contador], fechas[contador + 1]) > 0){
  137.                 bzero((char *)&temp, sizeof(temp));
  138.                 bzero((char *)&temp2, sizeof(temp2));
  139.                 strcpy(temp, fechas[contador]);
  140.                 strcpy(temp2, fechas[contador + 1]);
  141.                 strcpy(fechas[contador + 1], temp);
  142.                 strcpy(fechas[contador], temp2);
  143.             }
  144.         }
  145.     }
  146.  
  147.     return 0;
  148. }


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]

Etiquetas: fechas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:23.