Ir ao conteúdo
  • Cadastre-se

preciso de ajuda, para calcular data em C


saonunca01

Posts recomendados

1° Dica, esquece esse papo de festa, é pura distração do problema real.

 

2° Tem que manjar de data, quem manja de data sabe que o computador tem uma representação numérica para data, se você quiser pode fazer manualmente, vai ficar ruim.

 

Ou, leia esse link.

 

http://www.cplusplus.com/reference/ctime/time/

 

E faça ez mode.

Link para o comentário
Compartilhar em outros sites

Veja bem, você pode aplicar uma visão simplista:

 

- Subtraia apenas os dias;

- Converta isso pra segundos;

- Retire do total a quantidade de segundos (conversão) do primeiro dia;

- Calcule quantos segundos (de novo converta) o quanto de horas não foram usados do dia fim (24h - hora especificada).

 

Não se esqueça, trabalhe apenas com segundos.

 

Esse tipo de abordagem não leva em conta datas que cruzam o mês.

 

Agora, você precisa retirar as horas já gastas do 1º dia e as horas não usadas do 2º dia.

 

Exemplo:

1° Dia começou as 10h, você subtrai 10 * 60 * 60 do total. Porque essas horas não foram usadas pelo dia da festa.

2º Dia terminou as 22h, você subtrau (24 - 22) * 60 * 60. Pois o resto do dia não foi usado pela festa.

 

Depois do valor em segundos, recupere os valores usando resto (%) e divisão inteira (/).

 

Exemplo de como desfazer: 100.000 segundos são:

- 100000 / 24 * 60 * 60 = 1 dia

- O resto (13600) conseguido com %, dividida por 60 * 60 = 3 horas.

- O resto (40) / 60 =  0 minutos.

- O resto do acima = 40 segundos.

 

Acho que é o modelo mais fácil para iniciantes.

 

Atente para o fato (Dia Final - Dia inicial) + 1 = quantidade de dias.

Link para o comentário
Compartilhar em outros sites

Não consegui, acho que consegui interpretar certo até a parte do primeiro exemplo.

Mesmo assim quando rodo o programa está dando números muito altos. 

Ficou assim meu código:

 

#include <stdio.h>
 
int main (){
 
int d1, d2, h1, h2, horas_gastas, horas_nusadas, dia, horas, minutos, segundos;
 
scanf("%d %d", &d1, &h1);
scanf("%d %d", &d2, &h2);
 
dia = (d2 - d1) + 1;
horas_gastas = d1*60;
horas_nusadas = (24 - d2)*60;
horas = (horas_gastas - horas_nusadas) % 100000 / 60*60;
minutos =
segundos =
 
 
 
printf(" %d Dia(s)", dia);
printf(" %d Hora(s)", horas);
printf(" %d Minuto(s)", minutos);
printf(" %d Segundo(s)", segundos);
 
system ("pause");
return 0;
}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...