FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . 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.

Resposta
 
Opções do Tópico
Antigo 23-05-2005, 16:58   #1 (permalink)
felipe.gualdi
Newbie
 
Registrado em: Apr 2005
Localização: São Paulo
Mensagens: 7
Reputação: 0 felipe.gualdi está indo no caminho certo
Enviar mensagem via ICQ para felipe.gualdi Enviar mensagem via MSN para felipe.gualdi
Padrão Como descobrir qtos dias de vida você tem?!?!?!?!

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"
felipe.gualdi está offline   Responder com Quote
Antigo 23-05-2005, 17:39   #2 (permalink)
profeta_livre
Super Participante
 
Registrado em: Jan 2005
Mensagens: 958
Reputação: 16 profeta_livre está indo no caminho certo
Padrão

isso é pura m,atematica!
profeta_livre está offline   Responder com Quote
Antigo 23-05-2005, 18:19   #3 (permalink)
Hider
Veterano
 
Avatar de Hider
 
Registrado em: Sep 2003
Localização: Vitória - ES
Idade: 25
Mensagens: 1.407
Reputação: 1176 Hider tem uma fabulosa reputaçãoHider tem uma fabulosa reputaçãoHider tem uma fabulosa reputaçãoHider tem uma fabulosa reputaçãoHider tem uma fabulosa reputaçãoHider tem uma fabulosa reputaçãoHider tem uma fabulosa reputaçãoHider tem uma fabulosa reputaçãoHider tem uma fabulosa reputaçãoHider tem uma fabulosa reputaçãoHider tem uma fabulosa reputação
Enviar mensagem via MSN para Hider
Padrão

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
Hider está offline   Responder com Quote
Antigo 23-05-2005, 19:00   #4 (permalink)
intruso
Tô em todas
 
Avatar de intruso
 
Registrado em: Apr 2002
Localização: Paulista/PE
Mensagens: 1.642
Reputação: 525 intruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputação
Padrão

na verdade o ano bissexto é aquele que é divisivel por 4 e não é por 100 ....
__________________
Dê uma lida:
Eu não dou o peixe, ensino a pescar.

Meu Blog.
intruso está offline   Responder com Quote
Antigo 23-05-2005, 23:02   #5 (permalink)
aylons
General de Pijama
 
Avatar de aylons
 
Registrado em: Mar 2004
Localização: São Paulo
Idade: 28
Mensagens: 3.740
Reputação: 21 aylons possui ótimo potencial
Enviar mensagem via ICQ para aylons Enviar mensagem via MSN para aylons Enviar mensagem via Yahoo para aylons Enviar mensagem via Skype para aylons
Padrão

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
aylons está offline   Responder com Quote
Antigo 24-05-2005, 9:13   #6 (permalink)
intruso
Tô em todas
 
Avatar de intruso
 
Registrado em: Apr 2002
Localização: Paulista/PE
Mensagens: 1.642
Reputação: 525 intruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputaçãointruso tem uma fabulosa reputação
Padrão

ihhh ... foi mals... eu esqueci desses q são por 400 ... ops: :lol:
valeu a correção
t+
__________________
Dê uma lida:
Eu não dou o peixe, ensino a pescar.

Meu Blog.
intruso está offline   Responder com Quote
Antigo 24-05-2005, 13:36   #7 (permalink)
felipe.gualdi
Newbie
 
Registrado em: Apr 2005
Localização: São Paulo
Mensagens: 7
Reputação: 0 felipe.gualdi está indo no caminho certo
Enviar mensagem via ICQ para felipe.gualdi Enviar mensagem via MSN para felipe.gualdi
Padrão

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"
felipe.gualdi está offline   Responder com Quote
Antigo 24-05-2005, 13:59   #8 (permalink)
aylons
General de Pijama
 
Avatar de aylons
 
Registrado em: Mar 2004
Localização: São Paulo
Idade: 28
Mensagens: 3.740
Reputação: 21 aylons possui ótimo potencial
Enviar mensagem via ICQ para aylons Enviar mensagem via MSN para aylons Enviar mensagem via Yahoo para aylons Enviar mensagem via Skype para aylons
Padrão

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
aylons está offline   Responder com Quote
Antigo 24-05-2005, 14:32   #9 (permalink)
felipe.gualdi
Newbie
 
Registrado em: Apr 2005
Localização: São Paulo
Mensagens: 7
Reputação: 0 felipe.gualdi está indo no caminho certo
Enviar mensagem via ICQ para felipe.gualdi Enviar mensagem via MSN para felipe.gualdi
Padrão

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"
felipe.gualdi está offline   Responder com Quote
Antigo 24-05-2005, 14:44   #10 (permalink)
aylons
General de Pijama
 
Avatar de aylons
 
Registrado em: Mar 2004
Localização: São Paulo
Idade: 28
Mensagens: 3.740
Reputação: 21 aylons possui ótimo potencial
Enviar mensagem via ICQ para aylons Enviar mensagem via MSN para aylons Enviar mensagem via Yahoo para aylons Enviar mensagem via Skype para aylons
Padrão

Eu não entendi sua pergunta. Explica melhor.
__________________
Ayloиs Hazzud, com N invertido
aylons está offline   Responder com Quote
Antigo 24-05-2005, 14:52   #11 (permalink)
felipe.gualdi
Newbie
 
Registrado em: Apr 2005
Localização: São Paulo
Mensagens: 7
Reputação: 0 felipe.gualdi está indo no caminho certo
Enviar mensagem via ICQ para felipe.gualdi Enviar mensagem via MSN para felipe.gualdi
Padrão

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"
felipe.gualdi está offline   Responder com Quote
Antigo 24-05-2005, 15:03   #12 (permalink)
aylons
General de Pijama
 
Avatar de aylons
 
Registrado em: Mar 2004
Localização: São Paulo
Idade: 28
Mensagens: 3.740
Reputação: 21 aylons possui ótimo potencial
Enviar mensagem via ICQ para aylons Enviar mensagem via MSN para aylons Enviar mensagem via Yahoo para aylons Enviar mensagem via Skype para aylons
Padrão

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
aylons está offline   Responder com Quote
Antigo 24-05-2005, 15:08   #13 (permalink)
felipe.gualdi
Newbie
 
Registrado em: Apr 2005
Localização: São Paulo
Mensagens: 7
Reputação: 0 felipe.gualdi está indo no caminho certo
Enviar mensagem via ICQ para felipe.gualdi Enviar mensagem via MSN para felipe.gualdi
Padrão

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"
felipe.gualdi está offline   Responder com Quote
Antigo 03-04-2006, 11:01   #14 (permalink)
ilair
Newbie
 
Registrado em: Apr 2006
Mensagens: 1
Reputação: 0 ilair está indo no caminho certo
Enviar mensagem via MSN para ilair
Padrão

Citação:
Postado Originalmente por aylons
Não exatamente, intruso. O ano bisssexto é aquelçe que é divisível por 4, não é por 100, mas aqueles que são d...
Bom dia!

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
ilair está offline   Responder com Quote
Antigo 03-04-2006, 11:32   #15 (permalink)
aylons
General de Pijama
 
Avatar de aylons
 
Registrado em: Mar 2004
Localização: São Paulo
Idade: 28
Mensagens: 3.740
Reputação: 21 aylons possui ótimo potencial
Enviar mensagem via ICQ para aylons Enviar mensagem via MSN para aylons Enviar mensagem via Yahoo para aylons Enviar mensagem via Skype para aylons
Padrão

É 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
aylons está offline   Responder com Quote
Antigo 03-04-2006, 11:57   #16 (permalink)
G-Doria_New
Tô em todas
 
Registrado em: Nov 2003
Mensagens: 1.938
Reputação: 21 G-Doria_New possui ótimo potencialG-Doria_New possui ótimo potencial
Enviar mensagem via ICQ para G-Doria_New Enviar mensagem via MSN para G-Doria_New
Padrão

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)
G-Doria_New está offline   Responder com Quote
Antigo 29-05-2007, 16:03   #17 (permalink)
cleidsonal
Newbie
 
Registrado em: May 2007
Mensagens: 1
Reputação: 0 cleidsonal está indo no caminho certo
Padrão

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?
cleidsonal está offline   Responder com Quote
Antigo 30-05-2007, 0:43   #18 (permalink)
Andask
Membro Senior
 
Registrado em: May 2007
Mensagens: 243
Reputação: 11 Andask está indo no caminho certo
Padrão

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
Andask está offline   Responder com Quote
Antigo 30-05-2007, 0:47   #19 (permalink)
Andask
Membro Senior
 
Registrado em: May 2007
Mensagens: 243
Reputação: 11 Andask está indo no caminho certo
Padrão

achu q vc pode adotar cada ano como tendo 365.25 dias e mostrar a variavel do dia como integer achu q daria certo!
Andask está offline   Responder com Quote
Antigo 30-05-2007, 2:16   #20 (permalink)
david.rj.2k
Membro Senior
 
Registrado em: Jul 2006
Localização: Nova Iguaçu - RJ (BR)
Mensagens: 416
Reputação: 13 david.rj.2k possui ótimo potencial
Enviar mensagem via MSN para david.rj.2k
Padrão

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
david.rj.2k está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 5:53.