Calculos de sobrevida em c++[AJUDA]

1. Calculos de sobrevida em c++[AJUDA]

César
dark777

(usa Debian)

Enviado em 23/12/2017 - 00:25h

wiki.anon

boa noite moçada estava fazendo ums calculos de sobrevida apartir da diferença de dias entre duas datas contando anos bisextos mas os calculos nao estão batendo muito certo ja procurei algo sobre isso e nao encontrei nada queria entender o que esta faltando o que estou fazendo de errado para oa calculos nao baterem.

Acontece o seguinte, tenho a seguinte data abaixo
de acordo com esta calculadora.
https://pt.calcuworld.com/calendarios/calculadora-de-tempo-entre-duas-datas/

dias entre 29/03/1987 a 21/12/2017
30 anos, 8 meses 18 dias
diaspassados=11225

Então faço o mesmo input no meu programa e ele retorna a seguinte saída abaixo:

Digite data1: 29/03/1987

Digite data2: 21/12/2017

30 ano(s) 9 mes(es) e 5 dia(s) de vida
269400 horas
16164000 minutos
969840000 segundos
374 mes(es)
11225 dia(s)
1603 semana(s)

mas de acordo com esta calculadora
http://vini-brown.zip.net/

ele me mostra 368 meses

############################################
https://pt.calcuworld.com/calendarios/calculadora-de-tempo-entre-duas-datas/
De acordo com essa calculadora tenho:
2 anos, 1 meses, e 1 dias 762 dias

#input do meu programa sem anos bisextos pois de 89 a 91 nao tem bisexto:

Digite duas datas no formato DD/MM/YYYY

Digite data1: 29/03/1989

Digite data2: 30/04/1991

2 ano(s) 1 mes(es) e 2 dia(s) de vida
18288 horas
1097280 minutos
65836800 segundos
25 mes(es)
762 dia(s)
108 semana(s)

Se eu fizer o seguinte input abaixo contando apenas um ano tenho:
De acordo com a calculadora online:
são 1 anos, 3 meses, e 1 dias e 459 dias

# Meu programa:

Digite duas datas no formato DD/MM/YYYY

Digite data1: 29/03/1987

Digite data2: 30/06/1988

1 ano(s) 3 mes(es) e 4 dia(s) de vida
11016 horas
660960 minutos
39657600 segundos
15 mes(es)
459 dia(s)
65 semana(s)

esta dando tres dias a mais.

# input do meu programa con anos bisextos de 87 a 89 tem um bsexto:
2 anos, 1 meses, e 1 dias e 763 dias

Digite duas datas no formato DD/MM/YYYY

Digite data1: 29/03/1987

Digite data2: 30/04/1989

2 ano(s) 1 mes(es) e 3 dia(s) de vida
18312 horas
1098720 minutos
65923200 segundos
25 mes(es)
763 dia(s)
109 semana(s)
tambem esta dando tres dias a mais:

# de acordo com a calculadora on line utilizada do dia 29/03/1987 a 21/12/2017
são 30 anos, 8 meses, e 18 dias

o mesmo input no meu programa:

Digite duas datas no formato DD/MM/YYYY

Digite data1: 29/03/1987

Digite data2: 21/12/2017

30 ano(s) 9 mes(es) e 5 dia(s) de vida
269400 horas
16164000 minutos
969840000 segundos
374 mes(es)
11225 dia(s)
1603 semana(s)

esta dando um mes e 13 dias a mais.

Queria entender onde que ele está dando essa brecha no erro somando dias a mais ou seja meu programa esta dando 3 a cinco dias. dias a mais queria entender o porquê. O quê está faltando nos cálculos para ser algo mais preciso em relação as horas, minutos, segundos, milissegundos, meses, anos, dias e meses a mais decorrente a partir da data de aniversario na quantidade de dias.

meu programa é este abaixo no pastebin:
https://pastebin.com/CS7Qw68L


wiki.anon


  


2. Re: Calculos de sobrevida em c++[AJUDA]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 26/12/2017 - 00:02h

Para saber a diferença em dias, converta as datas a serem subtraídas em dias julianos (Julian Days).

Para converter os dias dessa diferença em ano, meses, semanas e dias (como resto não inteiro dos anteriores), vai depender das definições que você empregue de ano, mês e semana (e mesmo de dia). Do ponto de vista da sua aplicação, “daqui a um mês” ou “há exatamente um mês” depende do mês corrente ou não? Que sentido teria “daqui a um mês”, se isso fosse dito no dia 31 de janeiro, ou “há um mês”, dito no dia 30 de março? É OK para você que “três meses” não corresponda ao mesmo valor que três vezes o valor de um mês?

(Em tempo: note que essas perguntas nos afetam no nosso dia-a-dia. Você quer que seu programa lide com essas complexidades, ou ele poderia ser mais simples, de algum modo?)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts