Ir para conteúdo
Fórum Script Brasil

lucas asx

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre lucas asx

lucas asx's Achievements

0

Reputação

  1. 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; }
×
×
  • Criar Novo...