Jump to content

DUVIDA SIMPLES C++


Lucas Porto Ribeiro

Postagens Recomendadas

Leia a hora inicial, minuto inicial, hora final e minuto final de um jogo. A seguir calcule a duração do jogo.

Obs: O jogo tem duração mínima de um (1) minuto e duração máxima de 24 horas.

Entrada

Quatro números inteiros representando a hora de início e fim do jogo.

Saída

Mostre a seguinte mensagem: “O JOGO DUROU XXX HORA(S) E YYY MINUTO(S)” .

Eaii gente, alguém consegue me ajudar com esta questão? No meu ver está tudo certo, está compilando e testei as seguintes possibilidades:

td igual 0 0 0 0 OK
hora inicial maior 1 0 0 0 OK
hora inicial e minuto inicial maior 1 1 0 0 OK
hora inicial maior e minuto inicial menor 1 0 0 1 OK
hora inicial menor 0 0 1 0 OK
hora inicial e minuto inical menor 0 0 1 1
minuto inicial menor 0 0 0 1 OK
minuto inicial maior n faz sentido

 

Segue abaixo o meu código

 

 

#include <iostream>

using namespace std;

int main() {

 int first_hour, first_minute, last_hour, last_minute, hours, minutes;
 cin >> first_hour >> first_minute >> last_hour >> last_minute;

 if(last_hour > first_hour && last_minute > first_minute)
 {
     hours = last_hour - first_hour;
 }
 else if(last_hour > first_hour && last_minute < first_minute)
 {
     hours = last_hour - 1 - first_hour;
 }
 else if(last_hour > first_hour && last_minute == first_minute)
 {
     hours = last_hour - first_hour;
 }
 else
 {
     hours = last_hour + 24 - first_hour;
 }

 if(last_minute > first_minute)
 {
     minutes = last_minute - first_minute;
 }
 else if(last_minute < first_minute)
 {
     minutes = last_minute + 60 - first_minute;
 }
 else
 {
     minutes = 0;
 }

 if(hours == 24 && minutes > 0)
 {
     hours = 0;
 }

 cout << "O JOGO DUROU " << hours << " HORA(S) E " << minutes << " MINUTO(S)" << endl;
    return 0;
}

 

 

Link to comment
Compartilhe em outros sites

Depois de analisar o código novamente percebi que o minuto inicial maior faz sentido, segue um exemplo:

inicio -> 00:01    fim -> 00:00

Significa que a partida teve a duração de 23:59.

No entanto, reformulei o código com a mesma lógica, mas ainda não está correto.

 

#include <iostream>

using namespace std;

int main() {

 int f_h, f_m, l_h, l_m, h, m;
 cin >> f_h >> f_m >> l_h >> l_m;

 if(l_h > f_h && l_m >= f_m)
 {
     h = l_h - f_h;
     m = l_m - f_m;
 }
 else if(l_h > f_h && l_m < f_m)
 {
     h = l_h - f_h -1;
     m = l_m + 60 - f_m;
 }
 else if(l_h < f_h && l_m >= f_m)
 {
     h = l_h + 24 - f_h;
     m = l_m - f_m;
 }
 else if(l_h < f_h && l_m < f_m)
 {
     h = l_h + 24 - f_h;
     m = l_m + 60 - f_m;
 }
 else if(l_h == f_h && l_m == f_m)
 {
     h = 24;
     m = 0;
 }
 else if(l_h == f_h && l_m > f_m)
 {
     h = 0;
     m = l_m - f_m;
 }
 else if(l_h == f_h && l_m < f_m)
 {
     h = 23;
     m = l_m + 60 - f_m;
 }

 cout << "O JOGO DUROU " << h << " HORA(S) E " << m << " MINUTO(S)" << endl;


 return 0;
}

 

 

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora
×
×
  • Create New...