Jump to content
ricardof1

Ajuda nos codigos em C

Recommended Posts

ricardof1

Boas quero saber como se faz uma função que recebe, por parâmetro, as horas de início e término de um jogo, ambas subdivididas em 2 valores distintos: horas e minutos (portanto, 4 parâmetros). A função deve retornar, a duração do jogo em minutos, considerando que o tempo máximo de duração de um jogo é de 24 horas e que o jogo pode começar num dia e terminar no outro.

Preciso de uma ajuda muito urgente.

Share this post


Link to post
Share on other sites
Diutsu

Boas quero saber como se faz uma função que recebe, por parâmetro, as horas de início e término de um jogo, ambas subdivididas em 2 valores distintos: horas e minutos (portanto, 4 parâmetros). A função deve retornar, a duração do jogo em minutos, considerando que o tempo máximo de duração de um jogo é de 24 horas e que o jogo pode começar num dia e terminar no outro.

Preciso de uma ajuda muito urgente.

Por outras palavras: tempo decorrido entre dois eventos.

Podemos assumir que é similar a medir a distancia entre dois pontos (distancia = x1 - x0).

Então: Intervalo = Tfinal - Tinicial.

Cada evento é descrito por várias partes, então: IntervaloMinuto = ..., IntervaloHora = ...,  ... .

Está feito!

... To be Continued .....  :P

Vá vai  :wallbash: um bocado e descobre o que falta,  :wallbash: mais um bocado e se ainda tiveres dúvidas avisa.


XX SINFO - Semana Informática

Share this post


Link to post
Share on other sites
softklin

Como deves retornar a duração em minutos, eu sugeria converteres tudo para minutos, e fazeres as operações (basicamente, subtracções) a partir daí.

O caso particular é o jogo acabar no dia seguinte, em que te sugiro esta abordagem: calcula o tempo do jogo até à meia-noite (00:00, ou seja, 24*60 minutos). Depois calcula da meia-noite até à hora de fim do jogo, e somas ambos os resultados. Para verificares se um jogo acaba no dia seguinte, basta ver se a data de fim é menor ou igual (visto cada jogo poder ter até 24h) à de inicio.

O resto é C.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
ricardof1

Ja tenho o programa feito mas com um pequeno erro que é quando meto a hora inicial maior que a hora final a duração do jogo vai dar negativo. Como faço para resolver este problema? Com muita urgência.

Share this post


Link to post
Share on other sites
skinie18

Uma vista de olhos: http://www.cplusplus.com/reference/clibrary/ctime/difftime/

int tempo1; // Tempo
int tempo2; // Tempo
int tmp; // Variável temporária

if (tempo1 < tempo2){ //verifica se realmente o primeiro tempo é menor que o segundo
tmp = tempo1; // Copia tempo1 para tmp
tempo1 = tempo2;  //copia tempo2 para tempo1
tempo2 = tmp;  //copia o que foi guardado em tmp para tempo2
}

Share this post


Link to post
Share on other sites
softklin

Skinnie, se percebi o teu código, trocas as horas de inicio para a de fim, e viceversa. Isso neste caso não funciona, um exemplo:

O jogo começa às 18h, e acaba às 3h (da manhã). A duração do jogo é 9 horas, mas trocando os valores, e fazendo a típico subtracção, obtens 15.

Na sugestão que fiz, essas contas podem ser facilmente feitas da seguinte forma: contas as horas desde a inicial, até às 23. Depois, somas as restantes horas, e obtens o valor total da duração. Ou acho que basta simplesmente somares 24 às horas, para ficar o valor positivo.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Diutsu

Caso a hora final seja inferior à inicial adicionas 24 horas e passa a dar. Fica mais fácil de se perceber do que andares a contar até à meia noite e dps somar da meia noite em diante.

Basicamente é 24+final-inicial.


XX SINFO - Semana Informática

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.