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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
Даниил
68 / 41 / 7
Регистрация: 14.05.2013
Сообщений: 383
#1

Программа-таймер (отсчитывает определенное время) - C++

03.07.2013, 18:58. Просмотров 2405. Ответов 26
Метки нет (Все метки)

Нужно написать программу, вот задача:

Программа должна отсчитывать определённое количество времени(это время мы будем вводить)
Программа задаёт вопрос сколько времени отсчитать
допустим мы вводим 50 (в секундах)
И программа будет отсчитывать 50 секунд

Помогите написать пожалуйста!

Добавлено через 15 минут
Спасибо (хз кому), но я уже сам написал Вот исходник, вдруг кому нужен будет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
double x;
cout << "Введи время в секундах: " << endl;
cin >> x;
for (x = 1; x <= 60; ++x) {
cout << "Секунды: " << x
<< endl;
}
system ("pause");
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2013, 18:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Программа-таймер (отсчитывает определенное время) (C++):

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

Нажатие клавиш за определенное время - C++
Всем доброго времени суток. Возник такой вопрос... как в С++ возможно описать такое &quot;дело&quot;: пользователю даеться определенный интервал...

Выполнение функции в определенное системное время - C++
Привет. Как реализовать вызов функции, в строго определенные моменты времени? Конкретнее: вызывать функцию каждую секунду. Синхронно с...

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

Завершение бесконечного цикла через определенное время - C++
Есть бесконечный цикл for( ; ; ), который обрабатывает событие нажатия кнопки в игре. Если на кнопку не нажали в течении двух секунд,...

Очистка экрана в консоли через определенное время - C++
Результат стоит в консоли секунду потом происходит очистка экрана. как такое можно реализовать??

26
alsav22
5437 / 4832 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.07.2013, 05:27 #16
Дело может и не в этом компиляторе, а в Linux (или в компиляторах для Linux). Там ввод\вывод как-то по другому организован (боюсь сказать: небуферизован, потому что тут спор был на эту тему). Некотроые команды, например sync(), для очистки буфера, в Linux не работают. Но это предположение. Если бы проверить, в Linux, этот код с другим компилятором (не сырым)...
0
xtorne21st
08.07.2013, 00:22
  #17

Не по теме:

На линукс, подобного эффекта можно добиться используя заголовок <sys/select.h>:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <sys/select.h>
#include <iostream>
 
int main()
{
    int seconds;
    struct timeval t;
    std::cout << "Put seconds: ";
    std::cin >> seconds;
 
    while (seconds) 
    {
        t.tv_sec = 1;
        t.tv_usec = 0;
        select(0, NULL, NULL, NULL, &t);
        std::cout << "seconds: " << --seconds << std::endl;
    }
 
    return 0;
}

0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
08.07.2013, 00:50 #18
Цитата Сообщение от Croessmah Посмотреть сообщение
так же не даст точных результатов
А Sleep даст точный результат?
0
Croessmah
Ушел
13783 / 8033 / 928
Регистрация: 27.09.2012
Сообщений: 19,803
Записей в блоге: 3
Завершенные тесты: 1
08.07.2013, 00:55 #19
Цитата Сообщение от Retyrn0 Посмотреть сообщение
А Sleep даст точный результат?
Нет.
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
08.07.2013, 01:25 #20
Если нужна точность, то GetTickCount() или вообще использовать...хотя вряд ли.
Думаю Вам и точности Sleep() хватит) Хотя в данном случае SetTimer() значительно удобней.

Добавлено через 21 минуту
Боюсь спросить как Вы добились здесь:
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Спасибо (хз кому), но я уже сам написал Вот исходник, вдруг кому нужен будет:Код C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
double x;
cout << "Введи время в секундах: " << endl;
cin >> x;
for (x = 1; x <= 60; ++x) {
cout << "Секунды: " << x
<< endl;
}
system ("pause");
return 0;
}
Задержки в одну секунду? Процессор такой медленный, не успевает больше раза в секунду выводить строку? Если без лишней точности, нужно добавить ожидание в одну секунду в цикле (можно чуть меньше, с учётом времени выполнения остального кода). Кстати, чтобы не выстраивалось в рядок, можно чистить экран:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
double x;
cout << "Введи время в секундах: " << endl;
cin >> x;
for (x = 1; x <= 60; ++x) {
system("cls");///////////////////////////Чистим экран
cout << "Секунды: " << x
<< endl;
Sleep(1000);/////////////////////////////Эта строка преостановит выполнение на 1 секунду
}
system ("pause");
return 0;
Иначе на разных компьютерах и в зависимости от нагрузки процессора, будет "разная длина секунды". У меня 40 секунд прошло аж за пол секунды ;-)
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
08.07.2013, 04:01 #21
C++
1
2
3
4
5
6
7
8
9
10
11
12
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int a;
cout << "Введите секунды - ";
cin >> a;
Sleep(1000*a); //1 секунда = 1000 мс
 
cout << "\n";
system("PAUSE");
}
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
08.07.2013, 08:57 #22
Цитата Сообщение от xtorne21st Посмотреть сообщение
П.С. Если быть точнее - допустим, но выкидывает исключение
-pthread надеюсь прилинкован?
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
08.07.2013, 13:43 #23
Цитата Сообщение от ForEveR Посмотреть сообщение
-pthread надеюсь прилинкован?
Это многое меняет!

Добавлено через 10 минут
ForEveR, хотя, например, вот этот код по-прежнему работает не так как надо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <thread>
#include <chrono>
 
int main()
{
    std::cout << "Введи время в секундах: -> ";
    size_t seconds;
    std::cin>>seconds;
    while (seconds)
    {
       std::this_thread::sleep_for(std::chrono::seconds(1));
       std::cout << "Секунды: " << --seconds << " ";
    }
    
    return 0;
}
Добавлено через 1 минуту
Без нативных средств синхронизации IO в линукс, к сожалению, не обойтись. Имхо.
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
08.07.2013, 13:58 #24
Он работает верно. Ибо нет flush. Вот так будет работать как хотелось

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <thread>
#include <chrono>
 
int main()
{
    std::cout << "Введи время в секундах: -> ";
    size_t seconds;
    std::cin>>seconds;
    while (seconds)
    {
       std::this_thread::sleep_for(std::chrono::seconds(1));
       std::cout << "Секунды: " << --seconds << " " << std::endl;
    }
    
    return 0;
}
Ну или просто можно вызвать flush
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
08.07.2013, 14:42 #25
ForEveR, тогда подскажите, почему в windows этот же код работает по другому? (как и ожидается от программы). Имеется ввиду вот этот вот: Программа-таймер (отсчитывает определенное время)
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
08.07.2013, 15:02 #26
xtorne21st, А тут уже нужно читать стандарт. Если есть желание - вперед.
0
aLarman
644 / 565 / 89
Регистрация: 13.12.2012
Сообщений: 2,111
Завершенные тесты: 1
08.07.2013, 15:53 #27
не могу не предложить свой вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <Windows.h>
using namespace std;
 
 
int main()
{
    time_t a;
    cin>>a;
    time_t in = time(NULL);
    while((time(NULL)-in)<a)
    {
        Sleep(1);
    }
    cout<<a<<" seconds are elapsed\n";
    system("pause");
    return 0;
}
0
08.07.2013, 15:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2013, 15:53
Привет! Вот еще темы с ответами:

Создать цикл, повторяющийся раз в определенное время - C++
Здравствуйте, подскажите, как создать цикл, который выполняется раз в определенное время( к примеру раз в секунду).

Изменить значение переменной через определенное время - C++
Всем доброго времени суток. Допустим есть значение a=10; Надо его изменить на a=15 и что бы оно так держалось допустим в течени часа,...

Написать кликер, осуществляющий n-ое количество кликов за определенное время - C++
Всем привет! Нужна помощь... Не опытен в работе С++ Нужно задать координаты мыши допустим в 2 местах после чего программа сделает...

Открыть и закрыть файл exe через определенное время - C++
Извините за тупой вопрос. Мне нужно просто открыть экзешник и со временем,например 5 секунд,чтобы сам просто закрылся. То есть просто...


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

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

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