Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- typedef struct
- {
- int d;
- int m;
- int a;
- } Fecha;
- void ingresarFecha(Fecha *);
- void ingresarEnteroPos(int *);
- Fecha sumaDiasAFecha(Fecha*, int);
- bool esFechaValida (const Fecha*);
- int cantDiasMes(int, int);
- bool esBisiesto(int);
- int main()
- {
- Fecha fInicio;
- int dias;
- ingresarFecha(&fInicio);
- //ingresarEnteroPos(&dias);
- //Fecha fsuma= sumaDiasAFecha(&fInicio, dias);
- return 0;
- }
- void ingresarFecha(Fecha* f) // indica que la variable apuntada por el puntero no puede ser modificada desde este puntero
- {
- puts("\nIngrese una fecha (D/M/A): "); //puedo guardar con este formato si meto un caracter que no es un digito, anda tambien con -
- scanf("%d/%d/%d",&f->d, &f->m, &f->a); // el operador -> hace la desreferencia al puntero a la estructura en su lado izquierdo, y en el lado derecho el campo de esa estructura
- while(!esFechaValida(f))//no hace falta poner nada porque ya es puntero
- {
- puts("\nFecha invalida. Ingresela de nuevo:");
- scanf("%d/%d/%d",&f->d, &f->m, &f->a);
- }
- }
- bool esFechaValida (const Fecha* fecha)
- {
- if(fecha->a>=1601)
- if(fecha->m>=1&&fecha->m<=12)
- if(fecha->d>=1&&fecha->d<=cantDiasMes(fecha->m, fecha->a))
- return true;
- return false;
- }
- int cantDiasMes(int m, int a)
- {
- int dm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
- if(m==2&&esBisiesto(a))
- return 29;
- return dm[m];
- }
- bool esBisiesto (int anio)
- {
- return anio%4==0&&(anio%100!=0||anio%400==0);
- }
- //se puede definir una macro, como #define esBisiesto(anio%4==0&&(anio%100!=0||anio%400==0))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement