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

Интервальный таймер - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание GET или POST запроса http://www.cyberforum.ru/cpp-beginners/thread261978.html
Всем привет. Подскажите, как создать гет или пост запрос на сайт? Например, адрес сайта http://site.ru и нужно сделать запрос вида http://site.ru/index.php?get=текст_запроса . Не мог бы кто предоставить готовое решение или дать ссылку на объёмную статью, где очень подробно говорится о создании запросов к web-ресурсам?
C++ Используя механизм перегрузки функции На уроке преподаватель не объясняет как решать. Задачи берутся из "Основы программирования на языке С++" часть 2 Огнева М.В., Кудрина Е.В. Помогите, пожалуйста Разработать две версии функции F, заголовки которых выглядят след. образом: 1. float F (float x); 2. void F (float x, float &y); Систему: y= x, если x>0; =0, если -1<=x<=0; = x в квадрате, если x< -1. http://www.cyberforum.ru/cpp-beginners/thread261964.html
Использование функций-шаблонов C++
На уроке преподаватель не объясняет как решать. Задачи берутся из "Основы программирования на языке С++" часть 2 Огнева М.В., Кудрина Е.В. Помогите, пожалуйста Для работы с двумерными массивами арифметических типов данных разработать шаблоны ввода и вывода массива, и также шаблон для решения основной задачи: -> Если количество строк в массиве четное, то поменять строки местами по правилу:...
C++ Распараллеливание потоков
Добрый день. У меня есть программ в которой Пузырьковая сортировка и Бинарный поиск выполняются в отдельных потоках, причём изначально они приостановленные, а уже в main'е в определённых моментах я к ним обращаюсь с помощью ResumeThread(). Нужно решить две задачи на распараллеливание. Первая: Распараллелить пузырьковую сортировку и main, таким образом что бы на каждой итерации сортировки...
C++ определить принадлежность точки треугольнику http://www.cyberforum.ru/cpp-beginners/thread261949.html
определить принадлежит ли точка, заданная координатам, треугольнику, который задан координатами вершин. КАК задать треугольник? и как потом определить принадлежит (не принадлежит) точка которую мы задаем для нашего треугольника? визначити чи належить точкаБзадана координатам,трикутнику,який заданий координатами вершин.ЯК задати трикутник? і як потім визначити чи належить(не належить) точка яку...
C++ Вывести в новый файл информацию о той продукции, количество которой менее заданной величины. Решить задачу, используя структуру содержащую члены-данные и члены-функции. Подразумевается, что исходная информация храниться в текстовом файле input.txt, каждая строка которого содержит полную информацию о некотором объекте, результирующая информация должна быть записана в файл output.txt На основе данных входного файла составить инвентарную ведомость склада, включив следющие данные: вид... подробнее

Показать сообщение отдельно
Katy13
Сообщений: n/a

Интервальный таймер - C++

22.03.2011, 17:50. Просмотров 1437. Ответов 3
Метки (Все метки)

Добрый вечер. Мне очень нужна помощь в решении задачи на С++.
1) Должен быть метод, реализующий _один_ шаг работы таймера. Возвращать должен текущее состояние выхода (0 если счетчик не равен нулю, 1 если равен), при достижении счетчиком значения 0 он должен перезапускаться.
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
#include <windows.h>
#include <iostream>
 
using namespace std;
 
class timer                                     //класс таймера
{
    LARGE_INTEGER start;                        //начальное время
    double freq;                                //частота таймера
    double tick_len;                            //длина тика
    double current_time;                        //текущее время
    double last_time;                           //предыдущее время
    void init();                                //инициализация
    double get_freq();                          //частота таймера    
public:
    double need_time;                           //необходимое время
    void stop_timer();                          //остановка таймера
    int step_timer();                           //шаг работы
    void start_timer(int);                      //старт таймера
    void update_timer(int);                     //обновление
    double read_timer();                        //вернуть время (от начального времени)
};
 
 
//инициализация
void timer::init()
{
    freq = get_freq();
    tick_len = 1.0 / freq;
}
 
//частота таймера
double timer::get_freq()
{
    LARGE_INTEGER fr;
    if (!QueryPerformanceFrequency(&fr))        
        return  0;
    return (double)fr.QuadPart;
}
 
//вернуть время (от начального времени)
double timer::read_timer()
{
    DWORD_PTR oldMask = SetThreadAffinityMask(GetCurrentThread(),  0); //использовать только первое ядро процессора
    LARGE_INTEGER current_time;                                              //засечь текущее время
    QueryPerformanceCounter(&current_time);                                  //восстановить маску использования ядер процессора
    SetThreadAffinityMask(GetCurrentThread(), oldMask);                      //вернуть текущее время
    return (current_time.QuadPart - start.QuadPart) * tick_len;
}
 
//старт таймера
void timer::start_timer(int nt)
{
    init();
    DWORD_PTR oldMask = SetThreadAffinityMask(GetCurrentThread(),  0); //вот этого куска кода и тот который выше недолжно быть
    QueryPerformanceCounter(&start);
    SetThreadAffinityMask(GetCurrentThread(), oldMask);
    last_time = current_time = read_timer();
    need_time = nt;
    cout << "start_timer()\n";
}
 
//обновить таймер
void timer::update_timer(int nt)
{
    last_time = current_time;
    current_time = read_timer();
    start_timer(nt);
    cout << "update_timer()\n";
}
 
//остановить таймер
void timer::stop_timer()
{
    current_time = 0;
    need_time = 0;
    last_time = 0;
    cout << "stop_timer()\n";
}
 
//метод, реализующий один шаг работы таймера
int timer::step_timer()
{
    if(need_time - read_timer() >= 0)
        return 0;
    else
        return 1;
}
 
int main()
{
    timer mytimer;
 
    mytimer.start_timer(10);        //старт таймера с указанным временем
    while(!mytimer.step_timer())
    {
        cout << mytimer.need_time-(int)mytimer.read_timer() << "\n";
        system("cls"); 
    };
 
    mytimer.update_timer(4);       //обновление времени и рестарт таймера с новым временем
    
    while(!mytimer.step_timer())
    {
        cout << mytimer.need_time-(int)mytimer.read_timer() << "\n";
        system("cls");
    };
 
    mytimer.update_timer(5);
    mytimer.stop_timer();          //остановка таймера
 
 
    system("PAUSE");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru