Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define TRUE 1
- #define FALSE 1
- struct tagHORAS {
- int hora;
- int minutos;
- int segundos;
- };
- struct tagDATAS {
- int dia;
- int mes;
- int ano;
- };
- int Valid(int x, int inf, int sup);
- int Diames(int mes, int ano);
- unsigned long long ContaSegVida(struct tagHORAS HActual, struct tagHORAS HNasc, struct tagDATAS DActual, struct tagDATAS DNasc);
- int FinishL(int SegA, int MinA, int HorA, int DiaA, int MesA, int AnoA, struct tagHORAS HActual, struct tagDATAS DActual);
- unsigned long long DiatoSeg(int Dias);
- int ValidaData(int dia, int mes, int ano);
- int ValidaHora(int segundos, int minutos, int hora);
- int Valid(int x, int inf, int sup) {
- return (x >= inf && x <= sup) ? TRUE : FALSE;
- }
- int Diames(int mes, int ano) {
- int dias;
- if( mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12 )
- dias = 31;
- else if( mes == 2 ) {
- if( ( (!(ano % 4)) && (ano % 100) ) || (!(ano % 400)) )
- dias = 29;
- else
- dias = 28;
- }
- else
- dias = 30;
- return dias;
- }
- unsigned long long ContaSegVida(struct tagHORAS HActual, struct tagHORAS HNasc, struct tagDATAS DActual, struct tagDATAS DNasc) {
- unsigned long long SegTotal;
- int DiaI, DiaMes, MesI, AnoI, dif_s, dif_m, dif_h, diasTotal, count;
- SegTotal = 0;
- DiaI = DNasc.dia;
- MesI = DNasc.mes;
- AnoI = DNasc.ano;
- dif_s = dif_m = dif_h = diasTotal = count = 0;
- while(TRUE) {
- if(DiaI == DActual.dia && MesI == DActual.mes && AnoI == DActual.ano)
- break;
- else
- DiaI++;
- count++;
- DiaMes = Diames(MesI,AnoI);
- if(DiaI == DiaMes) {
- MesI++;
- diasTotal += DiaI;
- DiaI=1;
- if(MesI == 12) {
- AnoI++;
- MesI=0;
- }
- }
- }
- if(HNasc.hora > HActual.hora)
- dif_h = HNasc.hora - HActual.hora;
- else
- dif_h = HActual.hora - HNasc.hora;
- dif_h *= 60*60;
- if(HNasc.minutos > HActual.minutos)
- dif_m = HNasc.minutos - HActual.minutos;
- else
- dif_m = HActual.minutos - HNasc.minutos;
- dif_m *= 60;
- if(HNasc.segundos > HActual.segundos)
- dif_s = HNasc.segundos - HActual.segundos;
- else
- dif_s = HActual.segundos - HNasc.segundos;
- if(diasTotal != 0)
- diasTotal = DiatoSeg(diasTotal);
- if( count == 0 )
- DiaI = 1;
- SegTotal = DiatoSeg(DiaI-1) + dif_h + dif_m + dif_s + diasTotal;
- return SegTotal;
- }
- int FinishL(int SegA, int MinA, int HorA, int DiaA, int MesA, int AnoA, struct tagHORAS HActual, struct tagDATAS DActual) {
- if( SegA == HActual.segundos && MinA == HActual.minutos && HorA == HActual.hora && DiaA == DActual.dia && MesA == DActual.mes && AnoA == DActual.ano )
- return TRUE;
- return FALSE;
- }
- unsigned long long DiatoSeg(int Dias) {
- return Dias * 86400;
- }
- int ValidaData(int dia, int mes, int ano) {
- int maxmes;
- maxmes = Diames(mes,ano);
- if( !Valid(dia,1,maxmes) || !Valid(mes,1,12) || !Valid(ano,200,4000) ) {
- system("cls");
- printf("\n\n\t\t\tInvalido\n\n\n");
- return FALSE;
- }
- return TRUE;
- }
- int ValidaHora(int segundos, int minutos, int hora) {
- if( !Valid(hora,0,23) || !Valid(minutos,0,59) || !Valid(segundos,0,59) ) {
- system("cls");
- printf("\n\n\t\t\tInvalido\n\n\n");
- return FALSE;
- }
- return TRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement