Crie um programa em C que recebe do usuário uma quantidade inteira de segundos e imprime na tela a quantidade de anos, dias, horas, minutos e segundos que são cobridos por essa entrada.
- Entrada: 0
Saída: 0 anos, 0 dias, 0 horas, 0 minutos, 0 segundos
- Entrada: 3600
Saída: 0 anos, 0 dias, 1 horas, 0 minutos, 0 segundos
- Entrada: 180011983
Saída: 5 anos, 258 dias, 11 horas, 19 minutos, 43 segundos
Você deve considerar que 1 ano = 365 dias. Todos os valores são inteiros. A saída deve satisfazer às seguintes condições:
-
dias
-
horas <24
-
minutos
-
segundos
A SAÍDA DEVE SER EXATAMENTE COMO MOSTRADA NOS EXEMPLOS, com as palavras “anos”, “dias” no plural, com um espaço após cada vírgula, etc.
Você deve considerar que 1 ano = 365 dias. Todos os valores são inteiros. A saída deve satisfazer às seguintes condições:
Passo 1
O enunciado pede criar um programa em C que lê do usuário uma quantidade inteira de segundos e converte esse total em anos, dias, horas, minutos e segundos, considerando que
ano
dias. Para isso, vamos usar operações de divisão inteira e resto de divisão (módulo) para “pegar” cada unidade a partir do total de segundos.
Passo 2
Definimos quantos segundos existem em cada unidade:
Em C, podemos implementar isso como constantes ou calcular diretamente nos expressões de divisão e módulo.
Passo 3
Para extrair cada unidade a partir de um total de segundos
:
. anos
dividido por
.
. resto
módulo
.
. dias
resto
dividido por
.
. resto
resto
módulo
.
. horas
resto
dividido por
.
. resto
resto
módulo
.
. minutos
resto
dividido por
.
. segundos
resto
módulo
.
Passo 4
Agora montamos o programa em C completo. Vamos:
- Incluir
<stdio.h>
, - Declarar variáveis inteiras (podem ser
long long
para valores grandes), - Ler o total de segundos com
scanf
, - Fazer as divisões e módulos na ordem acima,
- Imprimir usando
printf
no formato exato solicitado:
"%lld anos, %lld dias, %lld horas, %lld minutos, %lld segundos\n"
Resposta
#include <stdio.h>
int main() {
long long S;
// lê o total de segundos
if (scanf("%lld", &S) != 1) {
return 0;
}
// constantes de conversão
const long long SEG_POR_ANO = 365LL * 24 * 3600;
const long long SEG_POR_DIA = 24LL * 3600;
const long long SEG_POR_HORA = 3600LL;
const long long SEG_POR_MINUTO = 60LL;
// cálculo de cada unidade
long long anos = S / SEG_POR_ANO;
long long resto1 = S % SEG_POR_ANO;
long long dias = resto1 / SEG_POR_DIA;
long long resto2 = resto1 % SEG_POR_DIA;
long long horas = resto2 / SEG_POR_HORA;
long long resto3 = resto2 % SEG_POR_HORA;
long long minutos = resto3 / SEG_POR_MINUTO;
long long segundos = resto3 % SEG_POR_MINUTO;
// saída no formato exato
printf("%lld anos, %lld dias, %lld horas, %lld minutos, %lld segundos\n",
anos, dias, horas, minutos, segundos);
return 0;
}