Difference between revisions of "C: Problema da idade em dias"
(→Dificuldade única) |
|||
Line 1: | Line 1: | ||
− | + | == Dificuldade única == | |
Faça um programa, utilizando a linguagem C, capaz de informar a idade em dias com base na data de nascimento de um ser. | Faça um programa, utilizando a linguagem C, capaz de informar a idade em dias com base na data de nascimento de um ser. | ||
Line 21: | Line 21: | ||
int ano = agora->tm_year + 1900; | int ano = agora->tm_year + 1900; | ||
</code> | </code> | ||
+ | |||
+ | === Exemplo 1 === | ||
+ | |||
+ | ==== Entrada ==== | ||
+ | 21 | ||
+ | 9 | ||
+ | 1981 | ||
+ | |||
+ | ==== Saída ==== | ||
+ | 10006 | ||
+ | |||
+ | (Considerando dia 12/02/2009) | ||
+ | |||
+ | |||
+ | === Exemplo 2 === | ||
+ | |||
+ | ==== Entrada ==== | ||
+ | 31 | ||
+ | 7 | ||
+ | 1981 | ||
+ | |||
+ | ==== Saída ==== | ||
+ | 10058 | ||
+ | |||
+ | (Considerando dia 12/02/2009) | ||
+ | |||
+ | === Outros exemplos === | ||
+ | Você pode gerar mais casos de teste para a data atual em: http://www.peterrussell.com/age.php |
Revision as of 04:12, 12 February 2009
Contents
Dificuldade única
Faça um programa, utilizando a linguagem C, capaz de informar a idade em dias com base na data de nascimento de um ser.
Para resolver este problema você precisa saber que:
- Setembro, abril, junho e novembro têm 30 dias, todos os outros meses tem 31 exceto fevereiro que tem 28, exceto nos anos bissextos nos quais ele tem 29.
- Todo ano par divisível por 4 é um ano bissexto (1992 = 4*468 então 1992 será um ano bissexto, mas 1990 não é um ano bissexto).
- A regra acima não é válida para anos de virada de século. Estes anos devem ser divisíveis por 400 para serem anos bissextos, todos os outro não são. Assim, o ano 1700, 1800, 1900 e 2100 não são bissextos, mas 2000 é bissexto.
Não é permitido o uso de funções de data da linguagem, exceto as necessárias para obter a data atual.
O programa deverá ler um dado por linha correspondente ao dia, mês e ano de nascimento (inteiros positivos válidos para seus respectivos valores). A saída será constituída de uma única linha com a quantidade de dias que o ser viveu.
Na linguagem C, pode-se obter o dia, mês e ano corrente através do código a seguir (necessário a inclusão de time.h):
time_t agora_t = time(NULL); struct tm *agora = localtime(&agora_t); int dia = agora->tm_mday; int mes = agora->tm_mon + 1; int ano = agora->tm_year + 1900;
Exemplo 1
Entrada
21 9 1981
Saída
10006
(Considerando dia 12/02/2009)
Exemplo 2
Entrada
31 7 1981
Saída
10058
(Considerando dia 12/02/2009)
Outros exemplos
Você pode gerar mais casos de teste para a data atual em: http://www.peterrussell.com/age.php