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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
#1

Секундомер с выводом на экран - C++

20.11.2011, 01:56. Просмотров 1975. Ответов 13
Метки нет (Все метки)

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int ms=0,s=0,m=0,h=0,ch,hh=3600,mm=60,ss=1000;
    do
    {
        system("cls");
        ms++;
        if (ms==ss)
        {
            s++;
            ms=0;
        }
        if (ms==ss*mm)
            m++;
        if (ms==ss*hh)
            h++;
        cout<<h<<":"<<m<<":"<<s<<"."<<ms;
 
        Sleep(1);
        
        
    }
    while(getch);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2011, 01:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Секундомер с выводом на экран (C++):

Проблема с выводом кириллицы на экран - C++
Друзья, у меня вопрос заключен в следующем, вот код: #include &lt;iostream&gt; using namespace std; struct Test{ char name; }; ...

Как сделать поиск в JSON-файле с выводом на экран - C++
Разработать класс в C++, для нахождения в json файле элемента по имени, с выводом содержимого на экран в среде С++? Я знаю, что для файла...

Бинарное древо (реализовать структуру и обход веток с выводом на экран) - C++ - C++
Есть код: обход бинарного дерева 3 разными способа с авто заполнением чисел #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include...

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

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

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

13
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
20.11.2011, 02:54 #2
Цитата Сообщение от shaffle Посмотреть сообщение
Sleep(1);
Потому что sleep для 1 миллисекунды работает не точно. Примерно точно начинает где-то с 15-25 миллисекунд.
0
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 13:03  [ТС] #3
понял, а как сделать тогда что бы с цыкла можно было выйти при нажатии клавиши?

Добавлено через 10 часов 7 минут
kbhit не работает как надо(
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,598
Записей в блоге: 12
20.11.2011, 15:02 #4
Цитата Сообщение от shaffle Посмотреть сообщение
kbhit не работает как надо(
CreateThread
0
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:02  [ТС] #5
CreateThread
не работает, или может я не правильно его использовал...
как в коде он будет выглядеть?
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,598
Записей в блоге: 12
20.11.2011, 17:29 #6
C
1
2
3
4
5
6
7
8
9
DWORD WINAPI ThreadFunc(LPVOID lpParam) 
{
...
}
int main ()
{
CreateThread(0,0,ThreadFunc,0,0)
return 0;
}
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,356
Записей в блоге: 2
Завершенные тесты: 1
20.11.2011, 17:33 #7
Van111, а каким образом CreateThread() заменяет kbhit() ?
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
20.11.2011, 17:34 #8
Цитата Сообщение от shaffle Посмотреть сообщение
kbhit не работает как надо(
Как вы узнали, что эта функция не работает?
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,598
Записей в блоге: 12
20.11.2011, 17:53 #9
Цитата Сообщение от Kastaneda Посмотреть сообщение
Van111, а каким образом CreateThread() заменяет kbhit() ?
не тормозит основную программу

kbnit() так и работает я просто её разложил
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,356
Записей в блоге: 2
Завершенные тесты: 1
20.11.2011, 18:05 #10
Цитата Сообщение от Van111 Посмотреть сообщение
kbnit() так и работает я просто её разложил
Не знаю как работает kbhit(), но по-моему она просто читает буфер консоли и проверяет есть ли там событие нажатия клавиши на клавиатуре. Зачем отдельный поток то?

Добавлено через 5 минут
Я думаю kbhit() на самом деле выглядит примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
 const int count=20;
 HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
 INPUT_RECORD IR[count];
 DWORD read;
 
 while(PeekConsoleInputA(hstd, IR, count, &read)){
         for(int i=0;i<read;i++)
            if(IR[i].EventType==KEY_EVENT)
                 return true
 }
return false;
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,598
Записей в блоге: 12
20.11.2011, 18:11 #11
Kastaneda, всё что не затормозит программу будет выполнятся в другом потоке
0
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 18:15  [ТС] #12
ну когда я нажимаю клавишу, он останавливает цыкл, но и в тоже время выходит с функции по неизвестным причинам, и выводит на экран результат и быстро проподает он

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
system("cls");
    cout<<"Что бы запустить секундомер, любую кнопку\n";
    if (_getch()!=0)
    {
        cin.sync();
        int ms=0,s=0,m=0,h=0,ch,hh=3600,mm=60,ss=10;
        do
        {
            system("cls");
            ms++;
            if (ms>=ss)
            {
                s++;
                ms=0;
            }
            if (ms>=ss*mm)
                m++;
            if (ms>=ss*hh)
                h++;
            cout<<h<<":"<<m<<":"<<s<<"."<<ms<<endl;
            cout<<"Что бы остановить время нажмите любую клавишу\n";
            Sleep(70);      
    }
    while(!kbhit());
    cout<<h<<":"<<m<<":"<<s<<"."<<ms;
    _getch();
0
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
20.11.2011, 18:17 #13
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
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <cstring>
#define WIDTH 80
#define HEIGHT 22
using namespace std;
int main()
{
    system("color 40");
     system("mode con cols=35 lines=3");
    system("title ÒÀÉÌÅÐ");
    int has,min,sek,mil;
    has=0;min=0;sek=0;mil=0;
    cout<<"\n      Press any key to start";
    getch();
    system("cls");
    cout<<"\n\n      Press any key to stop";
          char str[] = "\\";
        HANDLE hCon;
        COORD cPos;
        hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    for(;;){
            if (kbhit()){system("cls");
            cout<<"\n\n      Press any key to exit";
            cPos.Y = HEIGHT + (-21);
        cPos.X = ( WIDTH - strlen(str) ) + (-65);
        SetConsoleCursorPosition(hCon, cPos);
            cout<<has<<":"<<min<<":"<<sek<<":"<<mil;getch();Sleep(100);getch();return 0;}
            mil=mil+1;
            if(mil==64){sek++;mil=0;}
            if(sek==60){min++;sek=0;}
            if(min==60){has++;min=0;}
      cPos.Y = HEIGHT + (-21);
        cPos.X = ( WIDTH - strlen(str) ) + (-65);
        SetConsoleCursorPosition(hCon, cPos);
            cout<<has<<":"<<min<<":"<<sek<<":"<<mil;
            Sleep(1);
        
            }
return 0;
}
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,356
Записей в блоге: 2
Завершенные тесты: 1
20.11.2011, 18:23 #14
Цитата Сообщение от shaffle Посмотреть сообщение
ну когда я нажимаю клавишу, он останавливает цыкл, но и в тоже время выходит с функции по неизвестным причинам, и выводит на экран результат и быстро проподает он
ну так kbhit() не считывает символ, а просто проверяет была ли нажата клавиша, поэтому тут:
C++
1
2
3
while(!kbhit());
        cout<<h<<":"<<m<<":"<<s<<"."<<ms;
        _getch()
выводится результат и ф-ция getch() сразу же считывает нажатую клавишу, поэтому программа закрывается.
0
20.11.2011, 18:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 18:23
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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