Выведите длительность с помощью clock (), но результат умножается - PullRequest
0 голосов
/ 02 декабря 2018

Итак, я хочу показать продолжительность, в течение которой программа была открыта в секундах, но она отображала несколько секунд вместо одного символа.Ex.От 1 до 11111 Вот код:

int main() {
   clock_t start;
   double duration;
   int seconds;

   start = clock();
   while (true) {
      if ((clock() - start) % CLOCKS_PER_SEC == 0) {
        cout << (clock() - start) / (double)CLOCKS_PER_SEC;
      }
   }
}

Вывод:

01111111111111111111111222222222233333333333334444444445555555556666666666666667777777777777

Помогите решить эту проблему

1 Ответ

0 голосов
/ 02 декабря 2018

Ваш if чек полностью неверен.Представьте, что ваш while цикл запускается дважды и в clock() нет изменений, потому что он работает очень быстро.Он будет либо выводить оба раза, либо не выводить ни разу.Это не может быть правдой.

Правильная проверка состоит в том, чтобы проверить, прошла ли хотя бы одна секунда с момента последнего вывода данных.

 clock_t last_output;
 start = last_output = clock();
 while (true) {
      if (clock() > (last_output + CLOCKS_PER_SEC)){
          last_output += CLOCKS_PER_SEC;
          cout << (clock() - start) / (double)CLOCKS_PER_SEC;
    }
 }

Вот полный код:

#include <time.h>
#include <iostream>

int main()
{
    clock_t start, last_output;

    start = last_output = clock();
    while (true)
    {
        if (clock() > (last_output + CLOCKS_PER_SEC))
        {
            last_output += CLOCKS_PER_SEC;
            std::cout << (clock() - start) / (double)CLOCKS_PER_SEC << std::endl;
        }
     }
}
...