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

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

Восстановить пароль Регистрация
 
Despere
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 8
07.09.2014, 21:31     Часы с таймером - найти ошибку в коде, из-за которой не срабатывает таймер #1
Не могу разобраться где ошибка и почему не срабатывает таймер,помогите пожалуйста
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++ Найти ошибку в коде
Найти ошибку в коде C++
Найти ошибку в коде C++
C++ Найти ошибку в коде
C++ найти ошибку в коде
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.09.2014, 22:35     Часы с таймером - найти ошибку в коде, из-за которой не срабатывает таймер #3
Цитата Сообщение от Despere Посмотреть сообщение
Не работает таймер.
Дико мерцает, но работает.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,239
07.09.2014, 22:42     Часы с таймером - найти ошибку в коде, из-за которой не срабатывает таймер #4
Цитата Сообщение от Despere Посмотреть сообщение
Не работает таймер
VS2013 работает и не мерцает. Если у кого мерцание
C++
1
Sleep(1000);
перед закрывающей фигурной скобкой while
dmitry94
517 / 187 / 34
Регистрация: 25.05.2012
Сообщений: 780
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
 Аватар для 8Observer8
904 / 612 / 80
Регистрация: 05.10.2013
Сообщений: 2,312
Записей в блоге: 45
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
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
08.09.2014, 08:12     Часы с таймером - найти ошибку в коде, из-за которой не срабатывает таймер #9
Despere, если нужно выходить из цикла через определенное время, то неплохо бы узнать для начала, что time() возвращает кол-во секунд с 1 января 1970 года. Т.о. имеет смысл запомнить время ДО цикла, и сравнивать его с текущим time() в цикле для обеспечения выхода. Но это будет работать, если часы не переводить во время работы программы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2014, 09:39     Часы с таймером - найти ошибку в коде, из-за которой не срабатывает таймер
Еще ссылки по теме:

Найти ошибку в коде C++
C++ Найти ошибку в коде

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,180
Завершенные тесты: 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;
}
Yandex
Объявления
08.09.2014, 09:39     Часы с таймером - найти ошибку в коде, из-за которой не срабатывает таймер
Ответ Создать тему
Опции темы

Текущее время: 17:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru