Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Despere
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 8
#1

Часы с таймером - найти ошибку в коде, из-за которой не срабатывает таймер - C++

07.09.2014, 21:31. Просмотров 401. Ответов 9
Метки нет (Все метки)

Не могу разобраться где ошибка и почему не срабатывает таймер,помогите пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <ctime>
#include <time.h>
//using namespace std;
int main(void)
 
{   
    SYSTEMTIME lt, st;
    WORD wHour, wMinute, wSecond;
    
    while (!_kbhit())
    {
        
        GetLocalTime(&lt);
        GetSystemTime(&st);
        printf("local time: %02d:%02d:%02d\tsystem time:%02d:%02d:%02d\r", lt.wHour, lt.wMinute, lt.wSecond, st.wHour, st.wMinute, st.wSecond);
    }
    {
        int q, x, y, z;
    x = lt.wHour * 60 * 60, y = lt.wMinute * 60, z = lt.wSecond, q = x + y + z;
    if (q <= time(0) + 180) (!_kbhit()); else exit;
    }
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2014, 21:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Часы с таймером - найти ошибку в коде, из-за которой не срабатывает таймер (C++):

пример работы с таймером - часы - Delphi
В этой теме я объясню как создать собственный счётчик времени - часы. На форму кидаем 3 компонента label, кнопку Button и 3 edit и таймер...

Часы с будильником, таймером и секундомером - Delphi
Здравствуйте помогите создать для курсовой часы в которых содержаться будильник, таймер и секундомер. За ранее спасибо

Сделать аналоговые часы с будильником, таймером и разными часовыми поясами - Visual Basic .NET
Задание: Сделать аналоговые часы с будильником, таймером и разными часовыми поясами. Циферблат должен быть картинкой. Будильник должен...

Двумерный массив. Поиск нулей.Не могу найти ошибку ошибку в коде - Pascal
Вот,например массив 5 5 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 считываются два числа m и n и далее в выходной...

Цикл срабатывает не так, как планировалось. Нужно найти ошибку. - PHP БД
Заранее извиняюсь, если написал не в тот раздел, но , все же, прошу мне помочь. У меня такой код: echo ' &lt;form method=&quot;post&quot;&gt; ...

как сделать часы и таймер? - JavaScript
изучая php наткнулся на такую проблему вывести на экран значения переменных и даты не сложно но как сделать так чтобы они обновлялись...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Despere
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 8
07.09.2014, 21:56  [ТС] #2
Не работает таймер.Помоги пожалуйста)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <ctime>
#include <time.h>
//using namespace std;
int main(void)
 
{   
    SYSTEMTIME lt, st;
    WORD wHour, wMinute, wSecond;
    
    while (!_kbhit())
    {
        
        GetLocalTime(&lt);
        GetSystemTime(&st);
        printf("local time: %02d:%02d:%02d\tsystem time:%02d:%02d:%02d\r", lt.wHour, lt.wMinute, lt.wSecond, st.wHour, st.wMinute, st.wSecond);
        int q, x, y, z;
        x = lt.wHour * 60 * 60, y = lt.wMinute * 60, z = lt.wSecond, q = x + y + z;
 
        if (q <= time(0) + 1) (!_kbhit()); else getch;
    }
 
        
 
    return 0;
}
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.09.2014, 22:35 #3
Цитата Сообщение от Despere Посмотреть сообщение
Не работает таймер.
Дико мерцает, но работает.
rikimaru2013
C++ Game Dev
2429 / 1123 / 240
Регистрация: 30.11.2013
Сообщений: 3,673
07.09.2014, 22:42 #4
Цитата Сообщение от Despere Посмотреть сообщение
Не работает таймер
VS2013 работает и не мерцает. Если у кого мерцание
C++
1
Sleep(1000);
перед закрывающей фигурной скобкой while
dmitry94
560 / 190 / 35
Регистрация: 25.05.2012
Сообщений: 796
08.09.2014, 05:48 #5
Цитата Сообщение от Despere Посмотреть сообщение
if (q <= time(0) + 180) (!_kbhit()); else exit;
Это как?

Не проще ли сделать:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int lt_sec()
{
    SYSTEMTIME lt;
    WORD wHour, wMinute, wSecond;
    GetLocalTime(&lt);
    return lt.wHour * 60 * 60 + lt.wMinute * 60 + lt.wSecond;
}
 
int main()
{
   int time_start = lt_sec();
   int time_current = time_start;
   int diff = 3 * 60;
   while (time_current < time_start + diff)
   {
    Sleep(1000);
        time_current = lt_sec();
   }
  printf("time expired\r\n");
  return 0;
}
Не проверял, но должно работать.
8Observer8
1537 / 950 / 121
Регистрация: 05.10.2013
Сообщений: 3,311
Записей в блоге: 54
08.09.2014, 06:18 #6
Despere, я не понял ни задания, ни решения. Если можно, то поясните, пожалуйста, что будет видеть пользователь.
Despere
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 8
08.09.2014, 06:26  [ТС] #7
Задание заключалось в том,чтобы сделать полноценные часы,которые бы выключались через по истечению времени (3 минуты) или по нажатию любой клавиши(до этого времени)
Despere
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 8
08.09.2014, 06:33  [ТС] #8
странно,у меня VS2013 и он не подает никаких признаков жизни,просто часы как шли так и идут Т.е с таймером все в порядке и он отрубается через определенное время?А через сколько он отрубается или выполняет какое-то действие,я изначально ставил таймер на 180 секунд,но потом начал загоняться и я решил попробовать единичку)
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.09.2014, 08:12 #9
Despere, если нужно выходить из цикла через определенное время, то неплохо бы узнать для начала, что time() возвращает кол-во секунд с 1 января 1970 года. Т.о. имеет смысл запомнить время ДО цикла, и сравнивать его с текущим time() в цикле для обеспечения выхода. Но это будет работать, если часы не переводить во время работы программы.
zss
Модератор
Эксперт С++
6359 / 5923 / 1920
Регистрация: 18.12.2011
Сообщений: 15,227
Завершенные тесты: 1
08.09.2014, 09:39 #10
Не понятно, что тут имелось ввиду:
Цитата Сообщение от Despere Посмотреть сообщение
if (q <= time(0) + 1) (!_kbhit()); else getch;
Если остановить тиканье через несколько секунд или по нажатию клавиши, то я бы написал так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int main(void)
{   
    SYSTEMTIME st,lt;
    time_t qold=time(0);
    while (true)
    {
        GetSystemTime(&st);
        GetLocalTime(&lt);
        printf("local time: %02d:%02d:%02d\tsystem time:%02d:%02d:%02d\r", lt.wHour, lt.wMinute, lt.wSecond, st.wHour, st.wMinute, st.wSecond);
        time_t q=time(0);
        if( q > qold + 5)
        {
           _getch();
           qold=time(0);
        }else
        if( _kbhit() )
        {
           _getch();
           _getch();
           qold=time(0);
        }
    }
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2014, 09:39
Привет! Вот еще темы с ответами:

Таймер или аналоговые часы - C#
Есть ли у кого нибудь исходники таймер или аналоговых часов(со стрелками)

Как встроить таймер в часы - PascalABC.NET
Здравствуйте. Задание такое, написать на pascalABC, часы с таймером, сами часы есть, но вот, как встроить туда таймер? Как всё это...

Не срабатывает таймер - C#
Подскажите почему в этом коде таймер срабатывает только один раз, хотя должен сработать два раза? Самое интересное что когда я прохожу по...

Не срабатывает таймер в QT - C++ Qt
1.Пытаюсь привязать слот к таймеру QTimer timer; QObject::connect(&amp;timer, SIGNAL(timeout()), this, SLOT(sl2())); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.09.2014, 09:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru