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

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

Войти
Регистрация
Восстановить пароль
 
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
#1

Алгоритм задержки - C++

28.01.2013, 00:29. Просмотров 771. Ответов 12
Метки нет (Все метки)

Добрый вечер.
Хочу попробовать динамически выводить текст в консоли. Какой алгоритм создания задержки? Не через функцию
C++
1
Sleep().
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2013, 00:29     Алгоритм задержки
Посмотрите здесь:

C++ Объясните тупому почему задержка потока по Sleep() больше чем ... с вызывает задержки и других потоков?
C++ функция задержки
C++ нет задержки экрана
C++ Реализация трехсекундной задержки
Поочередный вывод на экран без задержки всей программы C++
Определение задержки между посылками COM C++
Осуществить движение змейки без задержки на ожидания ввода C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6227 / 3472 / 424
Регистрация: 29.11.2010
Сообщений: 9,178
28.01.2013, 00:31     Алгоритм задержки #2
чем вам эта функция не нравится? Можно через таймер делать, конечно, но зачем?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
28.01.2013, 02:00     Алгоритм задержки #3
C++
1
2
3
4
5
for (int i= 0; i<1000; i++)
for (int j= 0; j<1000; j++)
for (int k= 0; k<1000; k++)
...
for (int n= 0; n<1000; n++);
методом научного тыка подбираешь диапазоны и количество циклов.
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
28.01.2013, 02:11     Алгоритм задержки #4
kravam, такое только при дебаге работает, в релиз версии не прокатит.
NoMasters
Псевдослучайный
1743 / 1086 / 71
Регистрация: 13.09.2011
Сообщений: 3,108
28.01.2013, 02:13     Алгоритм задержки #5
UnsKneD, отключи оптимизацию, будет работать. Но не нужно.
ТС, чем именно тебе не угодил слип?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
28.01.2013, 02:20     Алгоритм задержки #6
UnsKneD, не знаю я ни про какие дебаги; а вообще в цикле можно что-нибудь делать. Тогда везде прокатит.
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
28.01.2013, 02:38     Алгоритм задержки #7
NoMasters, можно конечно, но глупо когда есть Sleep();
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,918
Записей в блоге: 17
28.01.2013, 03:01     Алгоритм задержки #8
По идее должно работать
C++
1
for (volatile int n=0 ; n<1000000; n++);
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
28.01.2013, 12:31  [ТС]     Алгоритм задержки #9
Цитата Сообщение от Avazart Посмотреть сообщение
По идее должно работать
C++
1
for (volatile int n=0 ; n<1000000; n++);
Как по мне это эквивалентно
C++
1
Sleep().
, в том плане что мы останавливаем выполнение программы. К тому же через цикл скорее всего будет 100% загрузка процессора.

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

Просто не хочется изобретать велосипед.
0x10
2450 / 1622 / 238
Регистрация: 24.11.2012
Сообщений: 3,991
28.01.2013, 12:48     Алгоритм задержки #10
fuelcs, можно в одном потоке выводить символы с задержкой, в другом - выполнять вычисления.
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.01.2013, 12:49     Алгоритм задержки #11
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
unsigned int tt = GetTickCount(), dt = 1000;
while(GetTickCount() < tt + dt)
{
cout << "Ждем\n";
}
cout << "Дождались\n";
Добавлено через 1 минуту
А эти ваши циклы на разных машинах по-разному работать будут, даже если отключить оптимизацию
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
28.01.2013, 13:22     Алгоритм задержки #12
Цитата Сообщение от fuelcs Посмотреть сообщение
Нужно выполнять определенные действия (вывод символов на экран) через определенные промежутки времени, но не останавливать программу.
ну так многопоточное программирование самое оно. Делаешь два потока. В одном используешь ту же самую Sleep. И когда один поток остановится, второй будет работать и делать чё тебе надо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 14:24     Алгоритм задержки
Еще ссылки по теме:

Алгоритм Брезенхема C++
Задержки в Sleep C++
Библиотека с функциями подачи и задержки звука C++
Подскажите куда вставить код с функцией задержки? C++
Функция задержки времени C++

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

Или воспользуйтесь поиском по форуму:
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
28.01.2013, 14:24  [ТС]     Алгоритм задержки #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
#include <iostream>
#include <ctime>
#include <conio.h>
 
using namespace std;
 
int main ()
{   
    clock_t latency [2]={1000,3000};
    clock_t last [2]={0,0};
    char text [2][255] = {"Sample 1, Sample 2"};
 
    for (;;)
    {
        for (int i=0;i<2;i++)
        {
            if ( (clock()-latency[i]) >= last[i])
            {
                cout << text[i] << "  ";
                last[i]=clock();
            }
        }
        if (_kbhit())
            break;
    }
 
    return 0;
}
По идеи вывод текста Sample 1 должен быть в три раза чаще чем Sample 2. Но текст почему то выводится одновременно.
В чем ошибка?

Добавлено через 3 минуты
Сори, недоглядел:
C++
1
char text [2][255] = {"Sample 1, Sample 2"};
Добавлено через 1 минуту
Еще вопрос, значение clock() нужно переводить в секунды? Что бы задержка была одинакова на любой машине?
Yandex
Объявления
28.01.2013, 14:24     Алгоритм задержки
Ответ Создать тему
Опции темы

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