|
![]() |
||
Como descobrir qtos dias de vida você tem?!?!?!?!
|
||
. Nós temos 759.214 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
Newbie
|
Bom Galera to precisando de uma ajudinha...
Faço faculdade de ciencias da computação, e como trabalhado de final de semestre o bendito professor passou um trabalinho para calcular a qtdade de dias de vida que vc tem (considerando o ano bissexto), porém estou numa fria... num tenho tempo... alguém ai tem uma ideia de como faço pra calcular a idade considerando o ano bissexto? Necessito transforma-lo em algum formato de numeros para que seja considerado os ultimos dias sem que o mês atrapalhe... Aguardo ancioso pela ajuda de vcs... Grato...
__________________
Felipe Gualdi \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ "Meu coração não bate, capota... Meu sangue não corre, tira racha" |
|
|
|
|
|
#2 (permalink) |
|
Super Participante
Registrado em: Jan 2005
Mensagens: 958
Reputação: 16
![]() |
isso é pura m,atematica!
__________________
http://www.oz.railsplayground.com/ |
|
|
|
|
|
#3 (permalink) |
|
Veterano
|
pega como entrada a idade no formato dd/mm/aaaa ai vc vai fazendo dependendo do ano vc vai dividindo por 4 eu acho ( bissexto he 4 em 4 ne?) nem sei ai vc pega o mes x 30 dependendo do num de anos bissexto vc diminui ai o n de dias e vai !!! vai fazendo q vc consegue num he dificil n!! mas vai enche o saco hehe !! tb to fazendo 1º periodo de CC isso he pra fazer no PASCAL??eu ja fiz isso no laboratorio uma vez fiz no pascal
obs: nunca axei nada para confiri se a conta tava certa!! intao se vc fizer algo q chegue em um numero aproximado com certeza vai passa de lizo pelo professor hehe!!!! falowww!!!!!!!
__________________
Gente nos fins de semana ![]() Windows 8 note* Linux note
|
|
|
|
|
|
#4 (permalink) |
|
Tô em todas
Registrado em: Apr 2002
Localização: Paulista/PE
Mensagens: 1.642
Reputação: 525
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
na verdade o ano bissexto é aquele que é divisivel por 4 e não é por 100 ....
|
|
|
|
|
|
#5 (permalink) |
|
General de Pijama
|
Não exatamente, intruso. O ano bisssexto é aquelçe que é divisível por 4, não é por 100, mas aqueles que são divisíveis por 400 são bissextos. Por isso o ano 2000 foi.
__________________
Ayloиs Hazzud, com N invertido |
|
|
|
|
|
#6 (permalink) |
|
Tô em todas
Registrado em: Apr 2002
Localização: Paulista/PE
Mensagens: 1.642
Reputação: 525
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ihhh ... foi mals... eu esqueci desses q são por 400 ...
ops: :lol: valeu a correção t+ |
|
|
|
|
|
#7 (permalink) |
|
Newbie
|
Então galera ai é complicado... o mais dificil mesmo é fazer com que ele de a idade exata... pq os meses que tem 31 dias interferem, os anos bissextos interferem...
Eu tava vendo uns artigos na net, que mandam dividir o numero por 80640, alguma coisa assim... mais num encontrei um sentido correto para isso...
__________________
Felipe Gualdi \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ "Meu coração não bate, capota... Meu sangue não corre, tira racha" |
|
|
|
|
|
#8 (permalink) |
|
General de Pijama
|
Nem sempre o algoritmo do software é matemática pura. Quer uma idéia?
Faça um programa que, a partir da data atual, vá fazendo uma contagem regressiva, indo para trás mês a mês, somando o número de dias de cada mes. Quando chegar em fevereiro, ele verifica se o ano é bissexto ou não e soma um dia se for o caso. Para quando chegar no mês de nascimento do cara e desconta o dia que ele nasceu naquele mes do total de dias.
__________________
Ayloиs Hazzud, com N invertido |
|
|
|
|
|
#9 (permalink) |
|
Newbie
|
Poxa cara é uma boa... mais me diz como eu faço uma lógica que conte o mes certinho?? Pq pensa comigo... vamos supor que seja 24 05 1984... vou contar mes a mes, porém devo começar apartir de um ano... e como fazer que conte o mes se ele esta no meio do ano? viajei neste ponto...
__________________
Felipe Gualdi \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ "Meu coração não bate, capota... Meu sangue não corre, tira racha" |
|
|
|
|
|
#10 (permalink) |
|
General de Pijama
|
Eu não entendi sua pergunta. Explica melhor.
__________________
Ayloиs Hazzud, com N invertido |
|
|
|
|
|
#11 (permalink) |
|
Newbie
|
Bom Vamos lá, vamos ver se eu consigo...
Contar usando os anos beleza, mais tenho problemas em como começar, pq? Assim vc não ira começar com um ano "completo" mais seim de um mes qualquer no meio do ano... como começar sem que isso interfira no resultado final? pq a ideia q vc me deu foi descontar o dia de nascimento no final, mais e qto aos dias atuais?? :cry:
__________________
Felipe Gualdi \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ "Meu coração não bate, capota... Meu sangue não corre, tira racha" |
|
|
|
|
|
#12 (permalink) |
|
General de Pijama
|
Como eu disse. Comece na data atual e vá tirando mês a mês. Depois você pode ir de ano em ano (ou ainda, de 4 em 4 anos, para ficar mais eficiente):
Por exemplo, Hoje, dia 24/05/2005. Seu algoritmo, para começar, coloca os 24 dias na soma. E começa a contar os meses que resta: 30 dias para abril, 31 para março, para fevereiro, ele soma 28 e verifica se estamos em ano bissexto. Se estivermos, soma 1, depois som a janeiro e pronto. Agora ele vai somando os 365 dias para cada ano e 366 nos anos bissextos. Ou, melhor ainda, vai somando (4x365 + 1) para cada 4 anos, até a diferença entre o ano que ele estiver e o ano de nascimento for menor que 4. Aí, você volta a somar os anos. Qndo chegar no ano do aniversario, os meses, e qndo chegar no mes, os dias. Tem várias otimizações matemáticas e computacionais que dá para fazer, mas esse é um exemplo bem didádito de algoritmo.
__________________
Ayloиs Hazzud, com N invertido |
|
|
|
|
|
#13 (permalink) |
|
Newbie
|
Fechou... esta ideia resolveu totalmente o meu problema... valeu cara... vc conseguiu me economizar pelo menos alguns neoronios e me deu algumas horas de sono.... rs... :lol:
![]()
__________________
Felipe Gualdi \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ "Meu coração não bate, capota... Meu sangue não corre, tira racha" |
|
|
|
|
|
#14 (permalink) | |
|
Newbie
|
Citação:
Gostaria de saber por que deve ser divisível por 400 e não pode ser divisível por 100 para que seja ano bissexto? Este ponto não está muito claro para mim. Desculpem minha ignorância neste ponto, mas tenho certeza de que isso é muito útil para muitos.
__________________
Ilair dos Santos Analista Programador Técnico em Contabilidade Técnico em Informática Academico de Sistemas de Informação |
|
|
|
|
|
|
#15 (permalink) |
|
General de Pijama
|
É uma forma de ajustar corretamente as casas decimais do ano.
A terra não dá a volta em torno do sol em 365 dias, mas em 365,25 dias. Por isso, a cada quatro anos, soma-se um (4 * 0,25 = 1). Maaas... A verdade é que esse tempo é melhor aproximado por 365,24. Por isso, a cada 100 anos, a gente cometeu o erro de um dia ao aproximar por 365,25 (0,01 * 100 = 1dia). Por isso os anos divisíveis por cem não são bissextos, para compensar esse dia a mais que foi contado no fim de cem anos. Porém, isso já é outra aproximação. O número mais correto seria 365,2425. Assim, a cada 400 anos, a gente deixou de contar um dia, novamente (0,0025 * 400 = 1). Por isso a gente coloca um dia a mais nos anos divisíveis por 400.
__________________
Ayloиs Hazzud, com N invertido |
|
|
|
|
|
#16 (permalink) |
|
Tô em todas
|
veja se isso te ajuda:
http://www.cosmobrain.com.br/lua/cosmobrain_calendar2003.js
__________________
Vendo PayPal e AlertPay - Cotação: Até 1000USD, Dólar comercial(venda) + 0,40 Acima de 1000 USD - Dólar Paralelo(venda) |
|
|
|
|
|
#17 (permalink) |
|
Newbie
Registrado em: May 2007
Mensagens: 1
Reputação: 0
![]() |
http://www.jornaldosamigos.com.br/calculo_de_idade.htm
Por este link, vc poderá calcular dias, meses, ano, segundos desde o dia q vc nasceu!!!! Isso é o q vc quer saber msm? |
|
|
|
|
|
#18 (permalink) |
|
Membro Senior
Registrado em: May 2007
Mensagens: 243
Reputação: 11
![]() |
Não pode ser feito na data atual, pq por exemplo vc fez dia 1º de qlqr mes o programa ai vc vai entregar pro professor soh dia 20, ai c ele for testa vai tah errado!
Achu q vc vai ter q por uma varial pra digitar a data atual tb, ou tenta com o getdate (se der, sl ) xD |
|
|
|
|
|
#19 (permalink) |
|
Membro Senior
Registrado em: May 2007
Mensagens: 243
Reputação: 11
![]() |
achu q vc pode adotar cada ano como tendo 365.25 dias e mostrar a variavel do dia como integer achu q daria certo!
|
|
|
|
|
|
#20 (permalink) |
|
Membro Senior
|
Andask, dessa forma o resultado seria impreciso, e provavelmente o professor vai comparar com resultado de outros alunos, ou seja, se tiver 20 alunos e 10 tiverem iguais, e o dele diferente, o dele estará errado.
Vo tenta, mas n vo fala que está certo, vo usar como base: 30/01/1991 (minha data de nascimento) até 30/05/2007 (dia que fiz esse post). Bom, sabemos que tem 16 anos de 1991 até 2007. Agora temos que saber quantos meses têm 16 anos no período. de 01 até 12 seriam 12 meses (JAN até DEZ) da data inicial. Explicando: do mes do meu aniversário até o ultimo mes do ano. Temos também que saber se passou por FEVEREIRO (para saber depois se contará ou não como ano bissexto, ou seja, adicionar um dia amais no tempo de vida), no caso, passou. ANO_INICIAL = 1991 NASCIMENTO_MES = 12; // Quantidade de meses desse ano (desde o mes de nascimento) NASCIMENTO_FEV = TRUE; // Fevereiro é agora ou já passou de 01 até 12 seriam mais 12 meses (JAN até DEZ) do mes. tirando 2 anos seria, 12*14 (MESES TOTAL * ( QUANTIDADE DE ANOS - 2 ) ). Seria então 168. Explicando: Tirei 2 anos porque os mesmos seriam calculados separadamente, o PRIMEIRO MES e o ULTIMO MES. de 01 até 05 seriam mais 05 meses (JAN até MAI) de hoje. Explicando: Do primeiro mes até o mes atual. Também será necessário se passou por FEVEREIRO. ANO_FINAL = 2007 HOJE_MES = 5; // Quantidade de meses desse ano até agora. HOJE_FEV = TRUE; // Fevereiro é agora ou já passou Ou seja: NASCIMENTO_MES + ( 12 * ( ( ANO_FINAL - ANO_INICIAL ) - 2 ) ) + HOJE_MES 12 + ( 12 * ( ( 2007 - 1991 ) - 2 ) ) + 5 = 12 + ( 12 * 14 ) + 5 = 185 meses. QUANTIDADE_MES = 185 Agora sabemos que um ano tem 365 dias, então 185 * 365 = 67525 dias, finalmente teremos de calcular quantos dias serão acrescentados para o ANO BISSEXTO. TOTAL_DIAS = 67525; Antes de qualquer coisa: % = MOD. ... 1992 % 4 igual a 0 --> DIAS_BISSEXTO + 1; ... 1996 % 4 igual a 0 --> DIAS_BISSEXTO + 1; ... 2000 % 4 igual a 0 --> DIAS_BISSEXTO + 1; ... 2004 % 4 igual a 0 --> DIAS_BISSEXTO + 1; ... Lembrando que: 1. Você terá que fazer um calculo para saber quandos dias foram bissextos (isso n é difícil). 2. Você não deverá usar o Boolean para saber se vai contar OU NÃO com o ano de nascimento e também contar OU NÃO com o ano final. Ou seja, 4 dias bissextos... TOTAL_DIAS + 4 = 67529 dias. Acho que falta também adicionar 30 dias (de nascimento) e retirar 30 dias (que se passaram desse mes, de hoje no caso), mas se eu fizer isso, dará ZERO, e não dará para perceber. então o meu é isso mesmo. UFA!!! Terminei, eu acho hehe... nossa... será que eu já vivi 67MIL dias? o.O to velho hehe.. Então vo tenta faze isso aki no PASCAL, caso consiga mando pra vocês o código fonte e o executável (pra quem não tive o compilador). FLWS! Espero ter ajudado (fora o complicado) hehe. FLWS! --- EDIT --- Só pra corrigir... O calculo poderá ficar um pouquinho impreciso, já que não consegui encaixar os DIAS de 31 e 30 dias :S... To tentando isso no PASCAL (ahh... to colocano bastante comentários para você entender melhor). --- EDIT --- Acho que o erro que eu disse acima dos dias que terminam em 30 e 31 não existe (ou talvez seja muuuuito pouco) erro de uns 5 dias talvez. Ahh... e como eu falei, to cumprindo! Fiz a parada em PASCAL e deu o mesmo resultado postado acima. Pra baixar é só vir aqui (Código-Fonte + Executável): http://rpg.grupoelite.com.br/outros/...po_de_vida.rar Obs.: Eu compilei com o FreePascal por dois motivos: 1. O valor final (tempo de vida) é maior que 65.535 (ou seja, 16 bits) e o Turbo Pascal não suportaria. 2. Precisei converter Integer para String, e se não me engano, o Turbo Pascal não tem a lib SysUtils (por isso ficou bem grande o resultado). FLWS!!! Espero ter ajudado. Ahh... Só não espero ter que calcular em segundos! hehe zuação FLWS!
__________________
Flash Websites Desenvolvimento de sites profissionais em PHP/JS [incluído AJAX] Parcelamos em até 3x Última edição por david.rj.2k : 30-05-2007 às 3:11. Motivo: Download |
|
|
|
![]() |
| Opções do Tópico | |
|
|