Ir para conteúdo
Fórum Script Brasil
  • 0

algoritmo de tempo decorrido


Rômulo_SD

Pergunta

Faça um programa que receba a hora de início de um jogo e a hora final do jogo (cada hora é composto por duas variáveis inteiras:hora e minuto).Calcule e mostre a duração do jogo (horas e minutos) sabendo-se que o tempo máximo de duração do jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte.

esse é o códico que um colega me ajudou:

#include <iostream>
using namespace std;

int CalculaTempo(int tempoInicial, int tempoFinal){
    int tempoDecorrido = 0;

    if(tempoInicial < tempoFinal){
        tempoDecorrido = tempoFinal - tempoInicial;
    }else{
        tempoDecorrido = tempoInicial-1440 - (tempoFinal);
    }

    if(tempoDecorrido < 0){
        tempoDecorrido = tempoDecorrido * (-1);
    }

    return tempoDecorrido;
}


int main(){
    int horaInicial;
    int minutoInicial;
    int horaFinal;
    int minutoFinal;

    int tempoResultado = 0;

    cout << "Digite a hora inicial: ";
    cin >> horaInicial;

    cout << "Digite o minuto inicial: ";
    cin >> minutoInicial;

    cout << endl << "Digite a hora final: ";
    cin >> horaFinal;

    cout << "Digite o minuto final: ";
    cin >> minutoFinal;

    tempoResultado = CalculaTempo((horaInicial*60)+minutoInicial, (horaFinal*60)+minutoFinal);

    int horaResultado;
    int minutoResultado = 0;

    if(tempoResultado >= 60){
        horaResultado = tempoResultado/60;
        minutoResultado = tempoResultado%60;
    }else{
        horaResultado = 0;
        minutoResultado  = tempoResultado;
    }

    cout << endl << endl << "O tempo total foi de: " << horaResultado << " horas e " << minutoResultado << " minutos." << endl << endl;

    return 0;
}

tem algum outro jeito de fazer?

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Em C, eu faria assim:

#include <stdio.h>

int calculaTempo(short int horaInicio, short int minutoInicio, short int horaFim, short int minutoFim){
    unsigned short int tempo;

    if(horaInicio > horaFim){
        tempo =  1440 - (horaInicio*60 + minutoInicio);
        tempo += horaFim*60 + minutoFim;
    }else
        tempo = (horaFim*60 + minutoFim) - (horaInicio*60 + minutoInicio);

    return(tempo);
}

int main(){
    short int horaInicio, minutoInicio, horaFim, minutoFim, retorno;

    printf("Digite o horario de inicio do jogo (HH:MM): ");
    scanf("%hi:%hi", &horaInicio, &minutoInicio);

    printf("Digite o horario de fim do jogo (HH:MM): ");
    scanf("%hi:%hi", &horaFim, &minutoFim);

    retorno = calculaTempo(horaInicio, minutoInicio, horaFim, minutoFim);

    printf("\nTempo: %d horas e %d minutos.", retorno/60, retorno%60);

    return(0);
}

A função calculaTempo() retorna a quantidade de minutos do intervalo de tempo.

Link para o comentário
Compartilhar em outros sites

  • 0

demoro mas consegui do meu jeito

heeee

#include <iostream>

using namespace std;

int main()

{

int hi=0,mi=0,hf=0,mf=0,tr=0,ti,tf=0;

cout << "Digite a hora inicial" << endl;

cin>>hi;

cout << "Digite os minutos iniciais" << endl;

cin>>mi;

cout << "Digite a hora final" << endl;

cin>>hf;

cout << "Digite os minutos finais" << endl;

cin>>mf;

ti=hi*60+mi;

cout<<ti<<endl;

tf=(hf*60)+mf;

cout<<tf<<endl;

if(tf<ti)

{

tr=1440-ti;

tr+=tf;

cout<<tr<<endl;

cout<<tr/60<<":"<<tr%60<<endl;

}

else{

tr=tf-ti;

cout<<tr/60<<":"<<tr%60<<endl;

}

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...