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

Таймер (выполнение кода через заданный промежуток времени) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ решение функции в виде таблицы http://www.cyberforum.ru/cpp-beginners/thread521228.html
кто подскажет, как сделать программу(первая прога на visual с++), пока только теорию читал, но как понял - этого мало:( Вот возникла проблемма с написанием кода, условие: Вычислить и вывести на экран в виде таблицы значения функции А на интервале X1 до Х2 с шагом dX. В условии через Ac, Bc, Cc обозначены целые части значений a, b, c(все действительные числа). Значения X1, X2, dx, a, b, с ...
C++ Определить количество серий, состоящих из квадратов натуральных чисел В целочисленном массиве определить количество серий, состоящих из квадратов натуральных чисел. Что такое натуральное число - понятно, квадрат - тоже, а вот количество серий - ... Как понять количество серий? Разъясните пожалуйста как можно проще, желательно с примером) http://www.cyberforum.ru/cpp-beginners/thread521211.html
C++ 2 мини задачки на массивы
1)Проверить, есть ли в массиве ДВА ПОДРЯД идущих одинаковых элемента. 2)Проверить, содержатся ли в массиве ДВА ПОДРЯД идущих отрицательных элемента. (Проверку состояния массива оформить в виде логической функции)
C++ Не работает Hello World
Добрый день! Я являюсь начинающим программистом C++ На данный момент ознакамливаюсь с первыми видеоуроками и сруз же столкнулся с проблемой. #include <iostrem> using namespace std; void main ()
C++ добавить расширение к имени файла http://www.cyberforum.ru/cpp-beginners/thread521186.html
т.е. чтобы постоянно не писать его в программе... void vvod(char name) { char dat=".dat"; fstream FileOutput; system("cls"); FileOutput.open(name, ios::out|ios::binary); strcpy(name, dat);
C++ Подскажите. как сделать exe файл? Написана программа с помощью builder, нужно из этих файлов сделать exe файл с программой. как? подробнее

Показать сообщение отдельно
Dmitry_gdv
64 / 64 / 5
Регистрация: 18.03.2010
Сообщений: 352
18.03.2012, 02:34     Таймер (выполнение кода через заданный промежуток времени)
Держи, студент:

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
29
30
31
32
33
34
35
36
37
38
39
#pragma once
#include <iostream>
#include <Windows.h>
#include <process.h>
#include <stdio.h>
 
struct Time {
    int sec;
    int min;
    int hours;
};
 
class Timer {
private:
    bool worked;
    Time time;
public:
    Timer( );
    Timer( Time time );
    Timer( const Timer& timer );
 
    void SetTimer( Time time );
    void SetSec( int sec );
    void SetMin( int min );
    void SetHours( int hours );
    const Time GetTimer( ) const;
    const int GetSec( ) const;
    const int GetMin( ) const;
    const int GetHours( ) const;
    const bool GetWorked( ) const;
    void Reset( );
    void StartTimer( );
    void StopTimer( );
    void Print( ) const;
 
    ~Timer( );
 
    friend void TimeCount( void *param );
};
Добавлено через 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include "Timer.h"
 
Timer::Timer( ) {
    time.sec = 0;
    time.min = 0;
    time.hours = 0;
    worked = false;
}
Timer::Timer( Time time ) {
    this->time.sec = time.sec;
    this->time.min = time.min;
    this->time.hours = time.hours;
    worked = false;
}
Timer::Timer( const Timer& timer ) {
    this->time.sec = timer.time.sec;
    this->time.min = timer.time.min;
    this->time.hours = timer.time.hours;
    worked = false;
}
 
void Timer::SetTimer( Time time ) {
    this->time.sec = time.sec;
    this->time.min = time.min;
    this->time.hours = time.hours;
}
void Timer::SetSec( int sec ) {
    this->time.sec = sec;
}
void Timer::SetMin( int min ) {
    this->time.min = min;
}
void Timer::SetHours( int hours ) {
    this->time.hours = hours;
}
const Time Timer::GetTimer( ) const {
    return time;
}
const int Timer::GetSec( ) const {
    return time.sec;
}
const int Timer::GetMin( ) const {
    return time.min;
}
const int Timer::GetHours( ) const {
    return time.hours;
}
const bool Timer::GetWorked( ) const {
    return worked;
}
void Timer::Reset( ) {
    time.sec = 0;
    time.min = 0;
    time.hours = 0;
}
void Timer::Print( ) const {
    std::cout << time.hours << ":" << time.min << ":" << time.sec << std::endl;
}
void Timer::StartTimer( ) {
    worked = true;
    _beginthread( TimeCount, 0, ( void* ) this );
}
void Timer::StopTimer( ) {
    worked = false;
}
 
Timer::~Timer( ) {
    time.sec = 0;
    time.min = 0;
    time.hours = 0;
    worked = false;
}
 
void TimeCount( void *param ) {
    Timer *timer = ( Timer* ) param;
    DWORD startSec = 0, endSec = 0;
    while( true ) {
        // START COUNTING
        startSec = GetTickCount( );
        while( true ) {
            if( !timer->worked )  {
                _endthread( );
                break;
            }
            // END COUNTING
            endSec = GetTickCount( );
            if( ( endSec - startSec ) >= 923 ) {
                if( timer->time.sec > 0 ) {
                    timer->time.sec --;
                    break;
                }
                else {
                    // IF ( 0 == timer->time.sec )
                    if( ( 0 == timer->time.min ) && ( 0 == timer->time.hours ) ) {
                        timer->worked = false;
                        // if oll data == 0 - end thread
                        _endthread( );
                        break;
                    }
                    // ELSE IF ( 0 != timer->time.min == timer->time.hours )
                    timer->time.sec = 59;
                    if( timer->time.min > 0 ) {
                        timer->time.min --;
                        break;
                    }
                    else {
                        // IF ( 0 == timer->time.min )
                        timer->time.min = 59;
                        if( timer->time.hours > 0 ) {
                            timer->time.hours --;
                            break;
                        }
                        // HOURS HAVE NOT LIMIT
                    }
                }
            }
        }
    }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru