Advertisement
Guest User

Untitled

a guest
Dec 11th, 2013
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.08 KB | None | 0 0
  1. #include <stdio.h>
  2. #define SIZEMESES 11
  3. #define NMESES 12
  4. #define MAX 10
  5.  
  6. char meses[NMESES][SIZEMESES] = {"enero", "febrero", "marzo", "abril", "mayo", "junio", "julio",
  7.                                  "agosto", "septiembre", "octrubre", "noviembre", "diciembre"};
  8.  
  9. //Estructura para almacenar las fechas
  10. typedef struct{
  11.  
  12.   int day;
  13.   int month;
  14.   int year;
  15.  
  16. }Tfecha;
  17.  
  18. //Estructura para almacenar los índices
  19. typedef struct{
  20.  
  21.   int mayor;
  22.   int menor;
  23.  
  24. }Tindicador;
  25.  
  26. //Función para leer las fechas
  27. int leerfecha(int i, Tfecha personas[]){
  28.  
  29.   printf("Introduzca el dia: ");
  30.   scanf("%d" , &personas[i].day);
  31.   printf("Introduzca el mes: ");
  32.   scanf("%d" , &personas[i].month);
  33.   printf("Introduzca el año: ");
  34.   scanf("%d" , &personas[i].year);
  35.   printf("--------------------------------\n");
  36.  
  37. }
  38.  
  39. //Mostrar por pantalla las fechas
  40. int printfecha(int i, Tfecha personas[]){
  41.  
  42.     personas[i].month -= 1;
  43.     printf("---Persona %d---\n",i+1);
  44.         printf("%d de %s de %d\n",personas[i].day,meses[personas[i].month],personas[i].year);
  45. }
  46.  
  47.  
  48. //Función para comparar las fechas
  49. Tindicador compfechas(Tfecha personas[], int num){
  50.  
  51. Tindicador indicadores;  
  52. int i;
  53. int highyear, highmonth, highday, lessyear, lessmonth, lessday;
  54.  
  55.   //La fechas mayor y menor debe ser, como mínimo, las almacenada en personas[0]
  56.   highyear = personas[0].year;
  57.   highmonth = personas[0].month;
  58.   highday = personas[0].day;
  59.  
  60.   lessyear = personas[0].year;
  61.   lessmonth = personas[0].month;
  62.   lessday = personas[0].day;
  63.  
  64.     for(i=1 ; i < num ; i++){
  65.      
  66.       /* -INICIO COMPARACION FECHA MAYOR */
  67.      
  68.       if(highyear < personas[i].year){                  /*Si el año es mayor a 'highyear' cambiamos el valor de 'highyear'
  69.                                                         y guardamos la posición*/
  70.             highyear = personas[i].year;
  71.             highmonth = personas[i].month;
  72.             highday = personas[i].day;
  73.    
  74.             indicadores.mayor = i;
  75.        
  76.         } else if(highyear == personas[i].year){            //Si el año es igual, comparamos los meses
  77.    
  78.                 if (highmonth < personas[i].month){         /*Si el mes es mayor a 'highmonth', modificamos 'highyear', 'highmonth' y 'highday'
  79.                                                             y guardamos la posicion*/
  80.                     highyear = personas[i].year;
  81.                     highmonth = personas[i].month;
  82.                     highday = personas[i].day;
  83.      
  84.                     indicadores.mayor = i;
  85.            
  86.                 } else if (highmonth == personas[i].month){         //Si el mes es igual a 'highmonth', comparamos el día
  87.      
  88.                         if (highday > personas[i].day){             /*Si el dia es menor a 'highday', modificamos 'highyear', 'highmonth' y 'highday'
  89.                                                                     y guardamos la posicion*/
  90.                             highyear = personas[i].year;
  91.                             highmonth = personas[i].month;
  92.                             highday = personas[i].day;
  93.                        
  94.                             indicadores.mayor = i;
  95.                         }
  96.                     }
  97.             }
  98.    
  99.      
  100.       /* -FINAL COMPARACION FECHA MAYOR */
  101.      
  102.       /* -INICIO COMPARACION FECHA MENOR */
  103.      
  104.       if(lessyear > personas[i].year){                  /*Si el año es menor a 'lessyear' cambiamos el valor de 'lessyear'
  105.                                                         y guardamos la posición*/
  106.             lessyear = personas[i].year;
  107.             lessmonth = personas[i].month;
  108.             lessday = personas[i].day;
  109.    
  110.             indicadores.menor = i;
  111.        
  112.         }else if(lessyear == personas[i].year){         //Si son iguales, comparamos meses
  113.    
  114.                 if (lessmonth > personas[i].month){     //Si es menor, modificamos las variables y guardamos posición
  115.      
  116.                     lessyear = personas[i].year;
  117.                     lessmonth = personas[i].month;
  118.                     lessday = personas[i].day;
  119.      
  120.                     indicadores.menor = i;
  121.                 }else if (lessmonth == personas[i].month){      //Si son iguales, comparamos día
  122.      
  123.                         if (lessday < personas[i].day){         //Si es menor, modificamos las variables y guardamos posición
  124.        
  125.                             lessyear = personas[i].year;
  126.                             lessmonth = personas[i].month;
  127.                             lessday = personas[i].day;
  128.      
  129.                             indicadores.menor = i;
  130.                         }
  131.                     }
  132.             }
  133.     }
  134.    
  135.     /* -FINAL COMPARACION FECHA MENOR */
  136.    
  137.     return(indicadores);  //Devolvemos los indicadores como un struct
  138. }  
  139.  
  140.  
  141. int main (void){
  142.  
  143. int i;
  144. int num;
  145. Tfecha personas[MAX];
  146. Tindicador indicadores;
  147.  
  148.   //Pedimos el número de fechas
  149.   printf("--------------****----------------\n");
  150.   printf("¿Cuantas fechas desea introducir?:");
  151.   scanf ("%d" , &num);
  152.   printf("--------------****----------------\n");
  153.  
  154.   //Leemos las fechas llamando a la función leerfecha()
  155.   for(i = 0; i < num; i++){
  156.     leerfecha(i, num, personas);
  157.   }
  158.  
  159.   //Mostramos por pantalla llamando a la función printfecha()
  160.   printf("Las fechas introducidas son:\n");
  161.  
  162.   for(i = 0; i < num; i++){
  163.     printfecha(i, num, personas);  
  164.   }
  165.  
  166.   //Llamamos a la funcion compfecha() y mostramos la fecha mayor y menor
  167.   indicadores = compfecha(personas, x);
  168.  
  169.   printf("--------------****----------------\n");
  170.   printf("La fecha menor es %d de %s de %d\n", personas[indicadores.menor].day, meses[personas[indicadores.menor].month], personas[indicadores.menor].year);
  171.   printf("La fecha mayor es %d de %s de %d\n", personas[indicadores.mayor].day, meses[personas[indicadores.mayor].month], personas[indicadores.mayor].year);
  172.   printf("--------------****----------------\n");
  173.  
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement