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

Теперь, когда я изучаю программирование на C, я наткнулся на код обратного отсчета на 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's out\n\n\n");

return 0;
}

0

Решение

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

0

Другие решения

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

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

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector