[quote=davidbuzatto]O problema é o ciclo.
Nasceu dia 29/02. No próximo ano, conta mais um ano se estiver em 01/03 até encontrar mais um ano bissexto (que não é necessariamente de 4 em 4 anos!). Se o ano que está sendo pesquisado for bissexto, a pessoa vai fazer aniversário no dia 29/02 e não no dia 01/03 concorda? Precisa tratar isso para ter um resultado mais preciso.
Tem um problema no UVa que trata extamente disso (idade): http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2160
Ainda não consegui resolvê-lo, apesar do meu programa estar gerando as saídas esperadas.
[]'s[/quote]
Mas o meu código trata exatamente como você descreveu, se a pessoa nasceu em 29/02/2008 fica assim como resultado:
29/02/2008 até 01/03/2009 result 0 (não tratei meses para esse caso)
01/03/2009 até 28/02/2010 result 1
01/03/2010 até 28/02/2011 result 2
01/03/2011 até 28/02/2012 result 3
29/02/2012 até 28/02/2013 result 4
e assim por diante…
Isso porque tiro a diferença entre os anos atual e de nascimento e depois verifico se a pessoa ja fez aniversário ou não pelo mês e dia, caso ela não tenha feito aniversário eu reduzo 1 da diferença entre os anos. Faça uns testes aí e veja se você acha algo de errado. De qualquer forma, vou olhar seu código e o exercício que você indicou.
Grande Abraço!