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

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

Войти
Регистрация
Восстановить пароль
 
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
#1

Если ввода нет, то продолжать цикл - C++

12.03.2013, 14:51. Просмотров 408. Ответов 4
Метки нет (Все метки)

Возвращаясь к теме таймера, как сделать такое: есть цикл, который постоянно работает и выводит на экран значение таймера. В любой момент времени пользователь может нажать клавишу и выйти из цикла. Но если программа будет ждать ввода пользователя, то цикл будет стоять на месте и следовательно ничего не будет выводится на экран, а если оставить как есть, то программа так и не получит ввода от пользователя. Надо чтоб цикл постоянно работал до нажатия на клавишу ожидая ввода какое то определенное время, если ввода не было, то забыть про запрос на ввод до следующей итерации. Как это можно реализовать?
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
#include <iostream>
#include <iomanip>
#include <thread>
#include <chrono>
 
int main()
{
    auto start = std::chrono::high_resolution_clock::now();
    char ch;
    unsigned minutes, seconds, milliseconds;
    while (true)
    {
        milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now()-start).count();
        seconds = milliseconds/1000;
        milliseconds %= 100;
        minutes = seconds/60;
        seconds %= 60;
        std::cout<<std::setw(2)<<minutes<<"."<<std::setw(2)<<seconds<<"."<<std::setw(2)<<milliseconds;
        std::this_thread::sleep_for(std::chrono::milliseconds(10));
        std::system("cls");
        /*if ((std::cin.get(ch) && ch == ' ') || ??) //если ввода нет, то продолжаем цикл while
        {
            std::cout<<"STOP\n";
            std::cin.get();
            break;
        }*/
    }
   std::cout<<"\nTime: "<<std::setw(2)<<minutes<<"."<<std::setw(2)<<seconds<<"."<<std::setw(2)<<milliseconds<<"\n";
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2013, 14:51     Если ввода нет, то продолжать цикл
Посмотрите здесь:

Остановить цикл ввода последовательности, если введенное значение равно нулю. - C++
В простую переменную последовательно вводятся числа. Окончание ввода 0. Сколько чисел больше своих соседей слева и справа. Вопрос в том как...

Обработка символьных данных. Yes, если есть символ в строке и NO если его нет - C++
Здравствуйте! Помогите решить задачу: Если в данный текст входит любая из букв слова key, напечатать да, если не входит то нет. #include...

Вывести на экран слова, в которых все символы повторяющиеся, или сообщение «Нет», если требуемых слов нет - C++
Дана последовательность символов, состоящая из слов. Вывести на экран слова, в которых все символы повторяющиеся, или сообщение «Нет», если...

Если в массиве есть хоть 1 отрицательное число, то программа должна печатать max, а если нет - то 0 - C++
Дано массив... если в массиве есть хоть 1 отрицательное число то программа должна печатать max, а если нет то 0; ну я здесь написал кое...

Определить является ли заданное число трёхзначным, если нет, вывести его последнюю цифру, а если да, первую - C++
Помогите пожалуйста, срочно. Нужно определить является ли число трёхзначным, если нет, вывести его последнюю цифру, а если да, первую....

Цикл ввода с условием - C++
Добрый вечер. У меня есть вопрос касательно кода. Как его зациклить? Я имею ввиду, чтобы на шаге &quot;Oshibka&quot; возвращало снова к вводу. Также...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.03.2013, 15:02     Если ввода нет, то продолжать цикл #2
Помнится была такая функция kbhit() в <conio.h>
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.03.2013, 15:18     Если ввода нет, то продолжать цикл #3
Что-то компилятор на эту строчку ругается:
C++
1
std::this_thread::sleep_for(std::chrono::milliseconds(10));
Пишет: "error: 'std::this_thread' has not been declared"
Чего не хватает?
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
12.03.2013, 15:41  [ТС]     Если ввода нет, то продолжать цикл #4
Цитата Сообщение от alsav22 Посмотреть сообщение
Чего не хватает?
std::this_thread походу в заголовке thread объявлен, но без этой строчки тоже должно работать.

Добавлено через 17 минут
Да, kbhit() решила проблему. Но что то я так и не нашел ее подробного описания на cppreference.com и cplusplus.com, она что, такая древняя? Хотелось бы взглянуть на реализацию.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2013, 15:45     Если ввода нет, то продолжать цикл
Еще ссылки по теме:

Цикл с ожиданием ввода - C++
Подскажите постоянный цикл, при этом что б определялся ввод данных с клавиатуры, нужно нарисовать символами анимированный обьект

Ввести с клавиатуры фамилию и задать букву на поиск (любую) тогда вывести ее на экран если он есть, а если нет то сообщение что она отсутствует. - C++
Ввести с клавиатуры фамилию и задать букву на поиск (любую) тогда вывести ее на экран если он есть, а если нет то сообщение что она...

Цикл и строки, очистка потока ввода - C++
Возникла проблема. При вводе &quot;Y&quot; цикл переходит сразу к следующему вооду, то есть пропускает &quot;cin.getline&quot;. Как исправить? #include...

Матрицы. Бесконечный цикл. Проверка ввода - C++
В конструкторе класса матриц пользователю предлагается выбрать ввода с клавиатуры или автоматически. При выборе ручного ввода возникает...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.03.2013, 15:45     Если ввода нет, то продолжать цикл #5
Цитата Сообщение от yuron_477 Посмотреть сообщение
Хотелось бы взглянуть на реализацию.
Вот здесь реализация через select описана.
Yandex
Объявления
12.03.2013, 15:45     Если ввода нет, то продолжать цикл
Ответ Создать тему
Опции темы

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