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

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

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

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

12.03.2013, 14:51. Просмотров 426. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2013, 14:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Если ввода нет, то продолжать цикл (C++):

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

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

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

Вывести решения уравнения, если их число конечно, "NO", если решений нет, и "INF", если их бесконечно много - C++
Задача с условным оператором. Решить в целых числах уравнение ax + b = 0. Входные данные Вводятся 2 целых числа: a и b. ...

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

Если возможно построить прямоугольный треугольник с заданными сторонами, вывести площадь, если нет - периметр - C++
Даны 3 стороны: a, b и с - натуральные. Если можно построить прямоугольный треугольник с этими сторонами, то вывести площадь этого...

4
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.03.2013, 15:02 #2
Помнится была такая функция kbhit() в <conio.h>
1
alsav22
5426 / 4821 / 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"
Чего не хватает?
0
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
12.03.2013, 15:41  [ТС] #4
Цитата Сообщение от alsav22 Посмотреть сообщение
Чего не хватает?
std::this_thread походу в заголовке thread объявлен, но без этой строчки тоже должно работать.

Добавлено через 17 минут
Да, kbhit() решила проблему. Но что то я так и не нашел ее подробного описания на cppreference.com и cplusplus.com, она что, такая древняя? Хотелось бы взглянуть на реализацию.
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.03.2013, 15:45 #5
Цитата Сообщение от yuron_477 Посмотреть сообщение
Хотелось бы взглянуть на реализацию.
Вот здесь реализация через select описана.
1
12.03.2013, 15:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2013, 15:45
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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