Olá a todos, estou precisando de ajuda para finalizar um programa.
Eu recebo o dia, mês e ano de nascimento de alguém e o atual, e então vejo a diferença de dias entre as duas datas.
O problema é que, a data chega perto, mas das diversas tentativas que fiz, nunca chega na data exata, e em alguns casos, até passa da data certa.
Meus testes por enquanto:
7/7/2001 a 14/5/2019 : 6847 dias (o resultado teria que ser 6520)
1/1/2001 a 14/5/2019 : 7028 dias (o resultado teria que ser 6707)
O problema que surge (que facilitaria muito) é que eu não posso usar comandos que façam a diferença entre duas datas ou algo do tipo.
Caso consigam me ajudar, muito obrigado.
#include <stdlib.h>
#include <stdio.h>
int DiaN;
int MesN;
int AnoN;
int DiaA;
int MesA;
int AnoA;
int TotalDiasA;
int TotalDiasN;
int TotalDias;
int cta;
int diasMes[12];
main(){
// atribuir dias aos meses
diasMes[0] = 31;
diasMes[1] = 28;
diasMes[2] = 31;
diasMes[3] = 30;
diasMes[4] = 31;
diasMes[5] = 30;
diasMes[6] = 31;
diasMes[7] = 31;
diasMes[8] = 30;
diasMes[9] = 31;
diasMes[10] = 30;
diasMes[11] = 31;
printf("\n Digite o ano de aniversario: ");
scanf("%d", &AnoN);
//se for bissexto fev tem 29
if(AnoN % 4 == 0){
diasMes[1] = 29;
}
while(MesN < 1 || MesN > 12){
printf("\n Digite o mes de aniversario: ");
scanf("%d", &MesN);
}
while(DiaN < 1 || DiaN > diasMes[MesN - 1]){
printf("\n Digite o dia de aniversario: ");
scanf("%d", &DiaN);
}
for(cta = MesN; cta < 12 ; cta++){
if(MesN == 12){
TotalDiasN = TotalDiasN + (diasMes[11] - DiaN);
break;
}else{
TotalDiasN = (TotalDiasN + diasMes[cta]);
}
}
//voltar fevereiro pra 28 pra validar
diasMes[1] = 28;
while(AnoA < AnoN || (AnoA - AnoN) >= 150){
printf("\n Digite o ano atual: ");
scanf("%d", &AnoA);
}
//ver se tb é bissexto
if(AnoA % 4 == 0){
diasMes[1] = 29;
}
while(MesA < 1 || MesA > 12){
printf("\n Digite o mes atual: ");
scanf("%d", &MesA);
}
while(DiaA < 1 || DiaA > diasMes[MesA - 1]){
printf("\n Digite o dia atual: ");
scanf("%d", &DiaA);
}
for(cta = MesA - 2; cta >= 0 ; cta--){
if(MesA == 1){
TotalDiasA = TotalDiasA + (diasMes[0] - DiaA);
}else{
TotalDiasA = (TotalDiasA + diasMes[cta]);
}
}
//voltar fev pra 28
diasMes[1] = 28;
TotalDias = (AnoA - AnoN);
TotalDias = TotalDias * 365;
TotalDias = (TotalDias + TotalDiasA + TotalDiasN);
for(cta = AnoN + 1; cta < AnoA; cta++){
if(cta % 4 == 0){
TotalDias = (TotalDias + 1);
}
}
printf("\nVocê viveu : ");
printf("%d", TotalDias);
printf(" dias.");
}