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

Секундомер. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.94
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
02.05.2011, 15:25     Секундомер. #1
Знаю подобные темы уже рассматривались на форуме, но ни в одной из них я не нашел ответа мой вопрос...
Как организовать секундомер что бы он начал счет в конкретный момент выполнения программы и закончил считать в нужный момент, записав результат в переменную ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2011, 15:25     Секундомер.
Посмотрите здесь:

Секундомер C++
секундомер C++
Секундомер C++
C++ Секундомер на С++
Секундомер и thread-safe C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
02.05.2011, 18:10  [ТС]     Секундомер. #21
Зачем вам вообще все это?
у меня например, тема курсовой "Сапер", вот мне и надо для сохранения результатов игры записать время потраченное на одну игру(статистика рекордов так сказать).
Ну зачем измерять время выполнения функции которая считает время выполнения себя же?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Жека_
Заблокирован
02.05.2011, 18:25     Секундомер. #22
pSychOo, тогда я не понял чё тебе вообще надо
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
02.05.2011, 18:29  [ТС]     Секундомер. #23
Мне нужно было разобраться в том как оно все устроено, мне объяснили по человечески, за что и большое спасибо ValeryLaptev.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
02.05.2011, 19:55     Секундомер. #24
Не проще GetLocalTime использовать?
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
02.05.2011, 19:58     Секундомер. #25
Цитата Сообщение от RUSya82 Посмотреть сообщение
Не проще GetLocalTime использовать?
Чел в С++ еле начал разбираться, а ты его WinAPI по башке...
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
02.05.2011, 20:01     Секундомер. #26

Сапёр - неплохо для начинающего
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
02.05.2011, 20:32  [ТС]     Секундомер. #27
Ага, точно! тем более что я его уже почти закончил,только и осталось добавить возможность формирования рейтинга лучших игроков
А вопрос только потому и возник что раньше не доводилось работать с временем
Но API для меня и вправду многовато... Нас такому не учили, а что бы самому ради интереса разбираться..не тот я человек.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
02.05.2011, 20:44     Секундомер. #28
Цитата Сообщение от pSychOo Посмотреть сообщение
Ага, точно! тем более что я его уже почти закончил,только и осталось добавить возможность формирования рейтинга лучших игроков
Молодец!

Цитата Сообщение от pSychOo Посмотреть сообщение
Но API для меня и вправду многовато...
Да я то не предлагаю тебе WinAPI изучать, просто предложил воспользоваться одной функцией, вот и всё.
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
03.05.2011, 11:00  [ТС]     Секундомер. #29
Ну обдумать это можно.
Как эта функция работает?
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
04.05.2011, 17:44     Секундомер. #30
Функция GetLocalTime(&st) записывает в переменную типа структуры SYSTEMTIME, в данном случае st, текущее системные дату и время, на момент вызова функции. То есть, если вызвать её перед началом фрагмента кода, время выполнения которого надо найти, и в конце, то мы сможем найти время её выполнения. Пример:
C++
1
2
3
4
5
6
7
8
9
SYSTEMTIME st1,st2;//объявим две переменные типа SYSTEMTIME
GetLocalTime(&st1);//записываем в первую текущее системное время
...............
..............//здесь код, или функция, время выполнения которого надо замерить
GetLocalTime(&st2);//записываем во вторую переменную время окончания
     long double T1 = (long double)(st1.wHour*60*60*1000 + st1.wMinute*60*1000 + st1.wSecond*1000 + st1.wMilliseconds); //âû÷èñëÿåì âðåìÿ
    long double T2 = (long double)(st2.wHour*60*60*1000 + st2.wMinute*60*1000 + st2.wSecond*1000 + st2.wMilliseconds);
     cout << "Время выполнения функции: ";
     cout << (T2 - T1) << " Миллисекунд" << endl;//выводим на экран время выполнения
Определение структуры SYSTEMTIME:
typedef struct _SYSTEMTIME
{
WORD wYear; // Указывает текущий год
WORD wMonth; // Текущий месяц; Январь = 1, Февраль = 2, и так далее
WORD wDayOfWeek; // Текущий день недели; Воскресенье = 0, Понедельник = 1, и так далее.
WORD wDay; // Текущий день месяца.
WORD wHour; // Час.
WORD wMinute; // Минуты.
WORD wSecond; // Секунды.
WORD wMilliseconds; // Миллисекунды.
} SYSTEMTIME;
И функции GetLocalTime() содержится в файле windows.h
у этого способа один косяк - если пользователь начнет играть скажем в 23:45, а закончит в 00:12, то пересчет будет ошибочным, тогда надо учитывать ещё и сутки.
Есть и более корректный способ - через структуру FILETIME, но честно, я его не знаю. Почитаю - напишу. Написал только то, чем пользовался, так сказать из собственного опыта.
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
04.05.2011, 19:00  [ТС]     Секундомер. #31
А чем такой метод лучше предыдущего?
Digit@ll
Brainsbreaker
 Аватар для Digit@ll
832 / 343 / 27
Регистрация: 01.02.2011
Сообщений: 1,483
04.05.2011, 22:15     Секундомер. #32
Та таймер используй и плюсуй его до остановки.
Не, пацаны, что вы городите? )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2011, 22:21     Секундомер.
Еще ссылки по теме:

C++ секундомер
Секундомер C++
C++ секундомер или таймер

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

Или воспользуйтесь поиском по форуму:
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
04.05.2011, 22:21  [ТС]     Секундомер. #33
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
То есть, дважды вызвали clock()? потом отняли от второго первое - получили количество тиков между вызовами. И делим на константу CLOCKS_PER_SEC specifies the relation between a clock tick and a second (clock ticks per second) - количество тиков в секунду.
Это как по мне самый удобный вариант.
Yandex
Объявления
04.05.2011, 22:21     Секундомер.
Ответ Создать тему
Опции темы

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