Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/47: Рейтинг темы: голосов - 47, средняя оценка - 5.00
4 / 3 / 2
Регистрация: 19.11.2019
Сообщений: 52
1

Секундомер на c++

22.01.2020, 02:13. Показов 9066. Ответов 4

Author24 — интернет-сервис помощи студентам
Создайте класс stopwatch для имитации секундомера. Используйте конструктор для
начальной установки секундомера в 0. Образуйте две функции-члена start() и stop()
соответственно для запуска и остановки секундомера. Включите в класс и функцию-член show()
для вывода на экран величины истекшего промежутка времени. Также используйте деструктор
для автоматического вывода на экран времени, прошедшего с момента создания объекта класса
stopwatch , до его удаления.Пожалуйста, добавить немного комментариев в код, так-как я являюсь
новичком в этом деле Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2020, 02:13
Ответы с готовыми решениями:

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

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

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

Секундомер
Пытаюсь написать секундомер, только вот не знаю как остановить его по нажатию клавиши и вернуть...

4
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
22.01.2020, 03:25 2
Лучший ответ Сообщение было отмечено dalv5 как решение

Решение

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
#include <iostream>
#include <time.h>
 
class Stopwatch
{
    clock_t tStart;
    clock_t tCreate;
    double tValue;
    bool _enabled;
 
public:
    ~Stopwatch() {
        std::cout << "sw d-tor past " << double(clock() - tCreate) / CLOCKS_PER_SEC << " sec\n";
    }
 
    Stopwatch() :
        tCreate(clock()),
        tStart(clock()),
        tValue(0.),
        _enabled(false)
    {
        std::cout << "sw c-tor\n";
    }
 
    bool start() {
        if (_enabled) return false;
        tStart = clock();
        _enabled = true;
        return true;
    }
 
    bool stop() {
        if (!_enabled) return false;
        tValue += double(clock() - tStart) / CLOCKS_PER_SEC;
        _enabled = false;
        return true;
    }
 
    double get() {
        return tValue + (_enabled ? double(clock() - tStart) / CLOCKS_PER_SEC : 0.);
    }
 
    void show() {
        std::cout << "sw time: " << get() << '\n';
    }
 
    void reset() {
        tValue = 0.;
        tStart = clock();
    }
};
 
 
int main()
{
    {
        Stopwatch sw1;
        sw1.start();
        _sleep(1000);
        sw1.show();
        _sleep(500);
        sw1.stop();
        _sleep(1000);
        sw1.start();
        _sleep(500);
        sw1.show();
    }
    {
        Stopwatch sw2;
        _sleep(500);
        sw2.start();
        _sleep(500);
        sw2.stop();
        _sleep(500);
        sw2.start();
        _sleep(500);
        sw2.stop();
        _sleep(500);
        sw2.show();
    }
 
    return 0;
}
 
/*
    sw c-tor
    sw time: 1
    sw time: 2
    sw d-tor past 3 sec
    sw c-tor
    sw time: 1
    sw d-tor past 2.5 sec
*/
1
0 / 0 / 0
Регистрация: 21.04.2019
Сообщений: 17
26.02.2021, 05:08 3
Цитата Сообщение от nalbe666 Посмотреть сообщение
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
#include <iostream>
#include <time.h>
 
class Stopwatch
{
    clock_t tStart;
    clock_t tCreate;
    double tValue;
    bool _enabled;
 
public:
    ~Stopwatch() {
        std::cout << "sw d-tor past " << double(clock() - tCreate) / CLOCKS_PER_SEC << " sec\n";
    }
 
    Stopwatch() :
        tCreate(clock()),
        tStart(clock()),
        tValue(0.),
        _enabled(false)
    {
        std::cout << "sw c-tor\n";
    }
 
    bool start() {
        if (_enabled) return false;
        tStart = clock();
        _enabled = true;
        return true;
    }
 
    bool stop() {
        if (!_enabled) return false;
        tValue += double(clock() - tStart) / CLOCKS_PER_SEC;
        _enabled = false;
        return true;
    }
 
    double get() {
        return tValue + (_enabled ? double(clock() - tStart) / CLOCKS_PER_SEC : 0.);
    }
 
    void show() {
        std::cout << "sw time: " << get() << '\n';
    }
 
    void reset() {
        tValue = 0.;
        tStart = clock();
    }
};
 
 
int main()
{
    {
        Stopwatch sw1;
        sw1.start();
        _sleep(1000);
        sw1.show();
        _sleep(500);
        sw1.stop();
        _sleep(1000);
        sw1.start();
        _sleep(500);
        sw1.show();
    }
    {
        Stopwatch sw2;
        _sleep(500);
        sw2.start();
        _sleep(500);
        sw2.stop();
        _sleep(500);
        sw2.start();
        _sleep(500);
        sw2.stop();
        _sleep(500);
        sw2.show();
    }
 
    return 0;
}
 
/*
    sw c-tor
    sw time: 1
    sw time: 2
    sw d-tor past 3 sec
    sw c-tor
    sw time: 1
    sw d-tor past 2.5 sec
*/
Здравствуйте

написал на основе вашего примера свою программу:

main.cpp
C++ (Qt)
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
#include <iostream>
#include "windows.h"
#include "StopWatch.h"
 
using std::cout;
using std::endl;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    StopWatch sw1;
 
    sw1.Start(); //запуск секундомера
    cout << "Cекундомер запущен." << endl;
    sw1.Show(); //отобразить время на секундомере
 
    Sleep(3000);
    sw1.Stop(); //остановка секундомера
    cout << "Спустя 3 сек. секундомер остановлен." << endl;
    sw1.Show(); //отобразить время на секундомере
 
    Sleep(5000);
    sw1.Start(); //запуск секундомера
    cout << "Спустя 5 сек. работа секундомера продолжена." << endl;
    sw1.Show(); //отобразить время на секундомере
 
    cout << endl;
    return 0;
}
StopWatch.h
C++ (Qt)
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
#include <ctime>
#include <iostream>
 
class StopWatch
{
    clock_t start;
    clock_t create;
    double value;
    bool started;
 
public:
    StopWatch()
    {
        start = false;
        create = clock();
        value = 0.0;
        started = false;
    }
 
    ~StopWatch()
    {
        std::cout << "Время жизни секундомера: " << (clock() - create) / CLOCKS_PER_SEC << " сек." << std::endl;
    }
 
    void Start()
    {
        if (started)
        {
            return;
        }
        start = clock();
        started = true;
    }
 
    void Stop()
    {
        if (!started)
        {
            return;
        }
        value += (clock() - start) / CLOCKS_PER_SEC;
        started = false;
    }
 
    void Show()
    {
        if (started)
        {
            std::cout << "Время на секундомере: " << value + (clock() - start) / CLOCKS_PER_SEC << "сек." << std::endl << std::endl;
        }
        else
        {
            std::cout << "Время на секундомере: " << value << "сек." << std::endl << std::endl;
        }
 
    }
};
Но что-то вместо ожидаемого:
Запущен секундомер №1.
Время на секундомере: 0сек.

Спустя 3 сек. секундомер №1 остановлен.
Время на секундомере: 3сек.

Спустя 5 сек. работа секундомера №1 продолжена.
Время на секундомере: 8сек.


Время жизни секундомера: 8сек.

получаю:
Запущен секундомер №1.
Время на секундомере: 0сек.

Спустя 3 сек. секундомер №1 остановлен.
Время на секундомере: 3сек.

Спустя 5 сек. работа секундомера №1 продолжена.
Время на секундомере: 3сек.


Время жизни секундомера: 8сек.


Подскажите пожалуйста куда мне обратить внимание чтобы найти ошибку.
0
2563 / 1275 / 468
Регистрация: 08.11.2016
Сообщений: 3,523
26.02.2021, 09:22 4
Цитата Сообщение от Игорь_Корнилов Посмотреть сообщение
куда мне обратить внимание чтобы найти ошибку
на строки №№ 23 и 24 в функции main().
1
0 / 0 / 0
Регистрация: 21.04.2019
Сообщений: 17
26.02.2021, 11:21 5
Цитата Сообщение от Annemesski Посмотреть сообщение
на строки №№ 23 и 24 в функции main().
Точно! Pабыл Sleep между Start и Show. Спасибо!
0
26.02.2021, 11:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2021, 11:21
Помогаю со студенческими работами здесь

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

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

Секундомер.
Знаю подобные темы уже рассматривались на форуме, но ни в одной из них я не нашел ответа мой...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru