Я пытаюсь создать функцию таймера, которая печатает таймер на 2 минуты (в форме M: S), который тикает сам по себе. У меня есть следующий код:

    void startTimer(){
    srand(time(0));

    clock_t start_t, end_t;
    clock_t start = clock();        
    clock_t end = clock();
    float seconds = (float)(end - start) / CLOCKS_PER_SEC;

    printf("%d", start, seconds);
    }
0
Alex 5 Апр 2017 в 17:01

2 ответа

Лучший ответ

Код, который вы имеете, может измерить время, необходимое для выполнения фрагмента кода. Здесь вам нужно только:

  • Распечатать обратный отсчет
  • Спи одну секунду

И сделать это в цикле.

#include <iostream>
#include <unistd.h>


int main(){
  for (int i = 120; i >=0; i--){
    std::cout << std::to_string(i/60) <<":" << std::to_string(i%60) <<std::endl; 
    sleep(1);
  }
  return 0;
}
0
Arash 5 Апр 2017 в 14:54

Я не очень понимаю ваш код.

  • Что вы хотите сделать со своим случайным?
  • Почему вы объявляете start_t и end_t?
  • Как вы думаете, какое значение будет иметь начало и конец?
  • Что вы хотите напечатать?

Если вам нужен 2-минутный таймер, возможно, вы можете использовать цикл от 120 до 0 с printf (минут = индекс / 60 и секунд = индекс% 60) и 1-секундным сном внутри цикла. Это заблокирует нить цикла. Это проблема?

Если да, возможно, вы захотите взглянуть на другие решения, такие как перемещение цикла внутри другого потока.

0
eti_nne 5 Апр 2017 в 14:40