Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/14: Рейтинг темы: голосов - 14, средняя оценка - 5.00
shaffle
1 / 1 / 1
Регистрация: 21.11.2010
Сообщений: 85
1

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

20.11.2011, 01:56. Просмотров 2561. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2011, 01:56
Ответы с готовыми решениями:

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

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

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

Напишите программу для модификации введенной с клавиатуры строки с последующим выводом результата на экран
Напишите программу для модификации введенной с клавиатуры строки с последующим выводом результата...

Создать класс строк с выводом на экран элемента массива по заданному индексу . Не получается вывести элемент
Не получается вывести выбранный элемент по заданному индексу:cry::-|. Выводит ошибку. Помогите...

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

Добавлено через 10 часов 7 минут
kbhit не работает как надо(
0
Van111
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,816
Записей в блоге: 12
20.11.2011, 15:02 4
Цитата Сообщение от shaffle Посмотреть сообщение
kbhit не работает как надо(
CreateThread
0
20.11.2011, 15:02
shaffle
1 / 1 / 1
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:02  [ТС] 5
CreateThread
не работает, или может я не правильно его использовал...
как в коде он будет выглядеть?
0
Van111
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,816
Записей в блоге: 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
Эксперт С++
5058 / 3076 / 351
Регистрация: 12.12.2009
Сообщений: 7,774
Записей в блоге: 2
Завершенные тесты: 1
20.11.2011, 17:33 7
Van111, а каким образом CreateThread() заменяет kbhit() ?
0
Chelioss
185 / 185 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
20.11.2011, 17:34 8
Цитата Сообщение от shaffle Посмотреть сообщение
kbhit не работает как надо(
Как вы узнали, что эта функция не работает?
0
Van111
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,816
Записей в блоге: 12
20.11.2011, 17:53 9
Цитата Сообщение от Kastaneda Посмотреть сообщение
Van111, а каким образом CreateThread() заменяет kbhit() ?
не тормозит основную программу

kbnit() так и работает я просто её разложил
0
Kastaneda
Jesus loves me
Эксперт С++
5058 / 3076 / 351
Регистрация: 12.12.2009
Сообщений: 7,774
Записей в блоге: 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
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,816
Записей в блоге: 12
20.11.2011, 18:11 11
Kastaneda, всё что не затормозит программу будет выполнятся в другом потоке
0
shaffle
1 / 1 / 1
Регистрация: 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
Игорь с++
476 / 468 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
Завершенные тесты: 1
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
Эксперт С++
5058 / 3076 / 351
Регистрация: 12.12.2009
Сообщений: 7,774
Записей в блоге: 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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 18:23

Деление с выводом на экран
Здравствуйте! Мне нужно поделить 2 числа на ассемблере. Но при делении частное записывается в...

работа с выводом на экран
Помогите доделать прогу =(, не могу довести до ума ее!!!..... выдать сообщение &quot;A&gt;5&quot;, если это...

Цикл с выводом на экран
Всем привет. Не могли бы вы написать пример код цикла(не событие), который выполнится при нажатии...


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

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

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