Implementar um cronómetro em C/C++

Tive a necessidade de implementar em um dos meus projectos académicos um cronómetro. Fica aqui a dica de como o fazer usando a biblioteca time.h que nos da acesso a funções que possibilitam o acesso e manipulação de datas e de tempo. Fica aqui o exemplo de como implementar um cronómetro.

time_t start, end;
tm * ptm;
char timetoShow[20];

char* cronometroRun()
{
time (&end);
time_t tempoGasto = end – start
ptm = gmtime ( &tempoGasto );
sprintf(timetoShow, “%2d:%02d”, ptm->tm_min, ptm->tm_sec );

return timetoShow;
}

A explicação:

Antes de mais, de notar dois pormenores:

  1. A variável start foi previamente iniciada com o comando time(&start) no momento desejado (antes da invocação do cronometroRun() ).
  2. A função definida cronometroRun() retorna a string com a formatação que pretendia apresentar, neste caso: mm:ss.

Agora a explicação importante:

  • time (&end) : guarda na variável end a actual hora do sistema como um objecto time_t.
  • time_t tempoGasto = end – start : é a variável que vamos usar para guardar o tempo decorrido entre o momento que iniciamos o nosso cronómetro ate a actualidade.
  • ptm = gmtime(&tempoGasto) : ptm é um apontador para uma estrutura tm que contem a informação de uma dada data. A função gmtime converte uma data do formato time_t para o formato tm, no nosso caso vai preencher a estrutura ptm criada por nos com a informação do tempo decorrido que se encontra já na variavel tempoGasto.
  • sprintf(timetoShow, “%2d:%02d”, ptm->tm_min, ptm->tm_sec ) : agora é so imprimir o meu cronómetro, no meu caso dava-me jeito imprimir os minutos e os segundos, no formato mm:ss.

And its done🙂

Simples e fácil, ficou aqui a dica, espero que seja útil para alguém.

6 Respostas

  1. Cara, vc sabe se tem como pegar os decimos de segundo também?

  2. cara nem sei se ainda pode postar ou se vc ainda reponde, mas essa variavel tipo time_t, já existe ou é uma struct que vc criou?
    desde já valeu

  3. cara nem sei se ainda pode postar ou se vc ainda reponde, mas essa variavel tipo time_t, já existe ou é uma struct que vc criou?
    desde já valeu.

  4. time_t é um tipo do C++🙂

  5. #include
    #include
    int main(void)
    {
    int hora,min,seg; // Declarando as variáveis.
    int i;
    int u = 0;
    hora = 0, min = 0, seg = 0; // Inicializando variáveis.

    system(“cls”);
    printf(“\n —-INICIANDO CRONOMETRO —- \n”);
    getchar();
    system(“cls”);

    while (hora < 24)
    {
    while (min < 60)
    {
    while (seg < 60)
    {
    if (seg < 10)
    {
    if (min < 10)
    {
    if (hora < 10)
    printf("\n 0%d:0%d:0%d",hora,min,seg);
    else
    printf("\n %d:0%d:0%d",hora,min,seg);
    }
    else
    {
    if (hora 9)
    {
    if (hora > 9)
    printf(“\n %d:%d:%d”,hora,min,seg);
    else
    printf(“\n 0%d:%d:%d”,hora,min,seg);
    }
    else
    {
    if (hora > 9)
    printf(“\n %d:0%d:%d”,hora,min,seg);
    else
    printf(“\n 0%d:0%d:%d”,hora,min,seg);
    }
    }
    /* Loop de delay que gera tempo de processamento dando
    a impressao de milionesimos de segundo.
    Caso queira aumentar a velocidade diminua o valor. */

    for (i = 0; i 23)
    {
    hora = 0; // Resetando hora, para que o loop seja continuo.
    }
    }
    } // Fim.

  6. FILHO DA PUTA APRENDA A FAZER UM CODIGO Q EU POSSA DAR CONTROL + C , CONTROL + V PORRA

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: