Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define SIZEMESES 11
- #define NMESES 12
- #define MAX 10
- char meses[NMESES][SIZEMESES] = {"enero", "febrero", "marzo", "abril", "mayo", "junio", "julio",
- "agosto", "septiembre", "octrubre", "noviembre", "diciembre"};
- //Estructura para almacenar las fechas
- typedef struct{
- int day;
- int month;
- int year;
- }Tfecha;
- //Estructura para almacenar los índices
- typedef struct{
- int mayor;
- int menor;
- }Tindicador;
- //Función para leer las fechas
- int leerfecha(int i, Tfecha personas[]){
- printf("Introduzca el dia: ");
- scanf("%d" , &personas[i].day);
- printf("Introduzca el mes: ");
- scanf("%d" , &personas[i].month);
- printf("Introduzca el año: ");
- scanf("%d" , &personas[i].year);
- printf("--------------------------------\n");
- }
- //Mostrar por pantalla las fechas
- int printfecha(int i, Tfecha personas[]){
- personas[i].month -= 1;
- printf("---Persona %d---\n",i+1);
- printf("%d de %s de %d\n",personas[i].day,meses[personas[i].month],personas[i].year);
- }
- //Función para comparar las fechas
- Tindicador compfechas(Tfecha personas[], int num){
- Tindicador indicadores;
- int i;
- int highyear, highmonth, highday, lessyear, lessmonth, lessday;
- //La fechas mayor y menor debe ser, como mínimo, las almacenada en personas[0]
- highyear = personas[0].year;
- highmonth = personas[0].month;
- highday = personas[0].day;
- lessyear = personas[0].year;
- lessmonth = personas[0].month;
- lessday = personas[0].day;
- for(i=1 ; i < num ; i++){
- /* -INICIO COMPARACION FECHA MAYOR */
- if(highyear < personas[i].year){ /*Si el año es mayor a 'highyear' cambiamos el valor de 'highyear'
- y guardamos la posición*/
- highyear = personas[i].year;
- highmonth = personas[i].month;
- highday = personas[i].day;
- indicadores.mayor = i;
- } else if(highyear == personas[i].year){ //Si el año es igual, comparamos los meses
- if (highmonth < personas[i].month){ /*Si el mes es mayor a 'highmonth', modificamos 'highyear', 'highmonth' y 'highday'
- y guardamos la posicion*/
- highyear = personas[i].year;
- highmonth = personas[i].month;
- highday = personas[i].day;
- indicadores.mayor = i;
- } else if (highmonth == personas[i].month){ //Si el mes es igual a 'highmonth', comparamos el día
- if (highday > personas[i].day){ /*Si el dia es menor a 'highday', modificamos 'highyear', 'highmonth' y 'highday'
- y guardamos la posicion*/
- highyear = personas[i].year;
- highmonth = personas[i].month;
- highday = personas[i].day;
- indicadores.mayor = i;
- }
- }
- }
- /* -FINAL COMPARACION FECHA MAYOR */
- /* -INICIO COMPARACION FECHA MENOR */
- if(lessyear > personas[i].year){ /*Si el año es menor a 'lessyear' cambiamos el valor de 'lessyear'
- y guardamos la posición*/
- lessyear = personas[i].year;
- lessmonth = personas[i].month;
- lessday = personas[i].day;
- indicadores.menor = i;
- }else if(lessyear == personas[i].year){ //Si son iguales, comparamos meses
- if (lessmonth > personas[i].month){ //Si es menor, modificamos las variables y guardamos posición
- lessyear = personas[i].year;
- lessmonth = personas[i].month;
- lessday = personas[i].day;
- indicadores.menor = i;
- }else if (lessmonth == personas[i].month){ //Si son iguales, comparamos día
- if (lessday < personas[i].day){ //Si es menor, modificamos las variables y guardamos posición
- lessyear = personas[i].year;
- lessmonth = personas[i].month;
- lessday = personas[i].day;
- indicadores.menor = i;
- }
- }
- }
- }
- /* -FINAL COMPARACION FECHA MENOR */
- return(indicadores); //Devolvemos los indicadores como un struct
- }
- int main (void){
- int i;
- int num;
- Tfecha personas[MAX];
- Tindicador indicadores;
- //Pedimos el número de fechas
- printf("--------------****----------------\n");
- printf("¿Cuantas fechas desea introducir?:");
- scanf ("%d" , &num);
- printf("--------------****----------------\n");
- //Leemos las fechas llamando a la función leerfecha()
- for(i = 0; i < num; i++){
- leerfecha(i, num, personas);
- }
- //Mostramos por pantalla llamando a la función printfecha()
- printf("Las fechas introducidas son:\n");
- for(i = 0; i < num; i++){
- printfecha(i, num, personas);
- }
- //Llamamos a la funcion compfecha() y mostramos la fecha mayor y menor
- indicadores = compfecha(personas, x);
- printf("--------------****----------------\n");
- printf("La fecha menor es %d de %s de %d\n", personas[indicadores.menor].day, meses[personas[indicadores.menor].month], personas[indicadores.menor].year);
- printf("La fecha mayor es %d de %s de %d\n", personas[indicadores.mayor].day, meses[personas[indicadores.mayor].month], personas[indicadores.mayor].year);
- printf("--------------****----------------\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement