Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.94
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
#1

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

02.05.2011, 15:25. Просмотров 5184. Ответов 32
Метки нет (Все метки)

Знаю подобные темы уже рассматривались на форуме, но ни в одной из них я не нашел ответа мой вопрос...
Как организовать секундомер что бы он начал счет в конкретный момент выполнения программы и закончил считать в нужный момент, записав результат в переменную ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2011, 15:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Секундомер. (C++):

секундомер - C++
Здравствуйте госпола програмисты!У меня такой вопрос-как сделать секундомер,что бы он не зависел от программы?грубо говоря он находиться в...

секундомер - C++
Здраствуйте! Мне задали на практику составить программу «Секундомер», позволяющую записывать результаты соревнований и сохранять их в базу,...

Секундомер - C++
Сделал такой небольшой код, что-то на подобии теста на сколько быстро вы печатаете. Никак до меня не дойдет как сюда секундомер влепить?...

Секундомер - C++
Пытаюсь написать секундомер, только вот не знаю как остановить его по нажатию клавиши и вернуть текущий результат: #include...

Секундомер - C++
Доброго времени суток. Проверьте пожалуйста программу, работающую аналогично секундомеру. Вот я сделал программу С++, но не...

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

32
Студент_игорь
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 24
02.05.2011, 17:36 #16
asics, написал, как вы предложили:
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 <iostream>
#include <ctime>
 
using namespace std;
 
void Prime (int n)
{
    bool f = true;
    int d = 2;
    while ((d <= n) && (f))
    {
        if (n % d == 0)
            f = false;
        d++;
    }
    cout << f << endl;
}
 
int main()
{
    const clock_t start = clock();
    Prime(9999999);
    const float duration = static_cast<float>(clock() - start) / CLOCKS_PER_SEC;
 
    cout << duration << endl;
    system("Pause");
    return 0;
}
но это ничего не дало, никакого результата... Нужно чтобы выдало время, затраченное на выполнения алгоритма, в данном случае - это проверка на простоту числа (специально не оптимизированный)...
Что исправить?
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
02.05.2011, 17:41 #17
А что выдает-то? Ноль?
Просто комп очень быстрый.
Нужно вызов Prime() поставить в цикле раз миллион примерно...
Тогда и увидишь разницу...
0
Студент_игорь
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 24
02.05.2011, 17:45 #18
ValeryLaptev, ну хотя бы миллисекунды выдал... Секунды - это слишком!

Добавлено через 2 минуты
Поставил до 1 миллиона, он выдал, 0.007. Это и есть миллисекунды, я так понимаю! да?
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
02.05.2011, 17:48 #19
Цитата Сообщение от Студент_игорь Посмотреть сообщение
ValeryLaptev, ну хотя бы миллисекунды выдал... Секунды - это слишком!

Добавлено через 2 минуты
Поставил до 1 миллиона, он выдал, 0.007. Это и есть миллисекунды, я так понимаю! да?
Да. Поставь миллиард...
И еще сюда входит время выполнения самого цикла.
Чтобы отнять, надо аналогично обмерить пустой цикл - без вызова prime() - и отнять из цикла с вызовом. Тогда совсем хорошо будет
0
Жека_
Заблокирован
02.05.2011, 18:05 #20
а не пробывали ставить задержку
C++
1
2
3
4
#include<dos.h>
....
delay(1000); или Sleep(1000);//1 секунда
....
0
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
02.05.2011, 18:10  [ТС] #21
Зачем вам вообще все это?
у меня например, тема курсовой "Сапер", вот мне и надо для сохранения результатов игры записать время потраченное на одну игру(статистика рекордов так сказать).
Ну зачем измерять время выполнения функции которая считает время выполнения себя же?
0
Жека_
Заблокирован
02.05.2011, 18:25 #22
pSychOo, тогда я не понял чё тебе вообще надо
0
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
02.05.2011, 18:29  [ТС] #23
Мне нужно было разобраться в том как оно все устроено, мне объяснили по человечески, за что и большое спасибо ValeryLaptev.
0
RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
02.05.2011, 19:55 #24
Не проще GetLocalTime использовать?
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
02.05.2011, 19:58 #25
Цитата Сообщение от RUSya82 Посмотреть сообщение
Не проще GetLocalTime использовать?
Чел в С++ еле начал разбираться, а ты его WinAPI по башке...
0
RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
02.05.2011, 20:01 #26

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

Цитата Сообщение от pSychOo Посмотреть сообщение
Но API для меня и вправду многовато...
Да я то не предлагаю тебе WinAPI изучать, просто предложил воспользоваться одной функцией, вот и всё.
0
pSychOo
-122 / 3 / 1
Регистрация: 16.04.2011
Сообщений: 55
03.05.2011, 11:00  [ТС] #29
Ну обдумать это можно.
Как эта функция работает?
0
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, но честно, я его не знаю. Почитаю - напишу. Написал только то, чем пользовался, так сказать из собственного опыта.
0
04.05.2011, 17:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2011, 17:44
Привет! Вот еще темы с ответами:

Секундомер - C++
Народ нужна помощь Задачка такая: нужно сделать Секундомер как в электронных часах ввиде: 00:00 когда будет 00:59 нужно что бы...

секундомер или таймер - C++
Добрый вечер, есть определённые действия, которые нельзя выполнять, пока не пройдёт определённый кд, как это настроить (что бы программа не...

Секундомер и thread-safe - C++
В моей программе мне нужно отслеживать время по секундам. Я сделал следующее: создал доп. поток, в котором вызывается методом с телом: ...

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


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

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