Счетчик продолжает повторять, пожалуйста, дайте ответ

0

Теперь я изучаю программирование на С, я наткнулся на код обратного отсчета на "Codeproject.com" и решил запустить его и проанализировать его, чтобы узнать. Тем не менее, выходной обратный отсчет повторяет каждый номер тысячи раз, прежде чем перейти к следующему. Пожалуйста, мне нужна помощь, чтобы понять, почему это так. Код показан ниже:

#include <stdio.h>
#include <time.h>

int main()
{
      unsigned int x_hours = 0;  
      unsigned int x_minutes = 0;
      unsigned int x_seconds = 0;
      unsigned int x_milliseconds = 0;
      unsigned int totaltime = 0, count_down_time_in_secs = 0, time_left=0;

      clock_t x_startTime, x_countTime;
      count_down_time_in_secs = 10; // 1 min is 60

      x_startTime = clock();
      time_left = count_down_time_in_secs-x_seconds;  //update timer

      while (time_left>0)
      {
        x_countTime = clock();
        x_milliseconds = x_countTime-x_startTime;
        x_seconds=(x_milliseconds/(CLOCKS_PER_SEC))-(x_hours*60);
        x_minutes=(x_milliseconds/(CLOCKS_PER_SEC))/60;
        x_hours=x_minutes/60;


        time_left = count_down_time_in_secs-x_seconds; 

        printf("\nyou have %d seconds left", time_left, count_down_time_in_secs);
      }

      printf("\n\n\nTime out\n\n\n");

    return 0;
}
Теги:
clock
timer
countdown

2 ответа

0
Лучший ответ

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

1

Компьютеры работают быстро, поэтому цикл будет выполняться много раз в секунду. Вам нужно сохранить предыдущее время, сравнить его с текущим временем и только распечатать его, если он изменится.

Также ваш вызов printf() имеет только один %d placeholder, но вы передаете ему два параметра.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню