lucas asx Postado Abril 4, 2015 Denunciar Share Postado Abril 4, 2015 olá galera,tenho que fazer um programa em C que calcule os dias decorridos entre 2 datas,pelo que eu pensei não encontrei nenhum erro,mas a resposta aparece sempre números muito negativos.segue meu código a seguir. eu pensei em calcular a data do ano "0' ate a data final,dps ate a inicial e subtrair.o que mais me deixou bolado,não foi o fato de dar errado por alguns dias ou algo semelhante,foi que deram números absurdos como emtre as datas 2/8/1995 e 2/8/1997 dar -1990485487 dias obs:botem no code blocks para ficar colorido e faclitar a visualização. #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { int di,mi,ai; int df,mf,af; int diastotais,diastotaisf,diastotaisi; int diasf,diasi; int anosbissextosi,anosnormaisi; int anosbissextosf,anosnormaisf; int dias,mes30f,mes31f,mes30i,mes31i,anos; char letra; while(letra!='f' && letra!='F') { scanf("%c",&letra); printf("digite a data inicial dias/mes/ano\n"); scanf("%d %d %d",&di,&mi,&ai); printf("digite a data final dia/mes/ano\n"); scanf("%d %d %d",&df,&mf,&af); //calculo dos dias ate o final anosbissextosf=floor(af/4); if(mf<9) { mes31f=floor((mf)/2); mes30f=mf-mes31f; } else { mes31f=floor((mf+1)/2); mes30f=mf-mes31f; } if(mf==1) diastotaisf=365*(af-1)+31*mes31f+30*mes30f+anosbissextosf-(31-df); else if(mf==3 ||mf==5 ||mf==7||mf==8||mf==10||mf==12) diastotaisf=365*(af-1)+31*mes31f+30*mes30f+anosbissextosf-(31-df)-2; else if(mf==2 ||mf==4 ||mf==6||mf==9||mf==11) diastotaisf=365*(af-1)+31*mes31f+30*mes30f+anosbissextosf-(30-df)-2; //calculo dos dias ate o inicial anosbissextosf=floor(af/4); if(mf<9) { mes31i=floor((mi)/2); mes30i=mf-mes31i; } else { mes31i=floor((mf+1)/2); mes30i=mf-mes31i; } if(mi==1) diastotaisi=365*(ai-1)+31*mes31i+30*mes30i+anosbissextosi-(31-di); else if(mi==3 ||mi==5 ||mi==7||mi==8||mi==10||mi==12) diastotaisi=365*(ai-1)+31*mes31i+30*mes30i+anosbissextosi-(31-di)-2; else if(mi==2 ||mi==4 ||mi==6||mi==9||mi==11) diastotaisi=365*(ai-1)+31*mes31i+30*mes30i+anosbissextosi-(30-di)-2; diastotais=diastotaisf-diastotaisi; printf("o numero de dias decorridos é %d\n",diastotais); } system("pause"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Jhonas Postado Abril 4, 2015 Denunciar Share Postado Abril 4, 2015 veja http://www.hardware.com.br/comunidade/dias-programa/1086325/ http://forum.clubedohardware.com.br/topic/864371-dias-entre-duas-datas-em-linguagem-c/ abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.