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

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

Восстановить пароль Регистрация
 
fuelcs
12 / 12 / 0
Регистрация: 23.01.2013
Сообщений: 143
28.01.2013, 00:29     Алгоритм задержки #1
Добрый вечер.
Хочу попробовать динамически выводить текст в консоли. Какой алгоритм создания задержки? Не через функцию
C++
1
Sleep().
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
28.01.2013, 00:31     Алгоритм задержки #2
чем вам эта функция не нравится? Можно через таймер делать, конечно, но зачем?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
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
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,094
28.01.2013, 02:13     Алгоритм задержки #5
UnsKneD, отключи оптимизацию, будет работать. Но не нужно.
ТС, чем именно тебе не угодил слип?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
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
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 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
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
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
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
28.01.2013, 13:22     Алгоритм задержки #12
Цитата Сообщение от fuelcs Посмотреть сообщение
Нужно выполнять определенные действия (вывод символов на экран) через определенные промежутки времени, но не останавливать программу.
ну так многопоточное программирование самое оно. Делаешь два потока. В одном используешь ту же самую Sleep. И когда один поток остановится, второй будет работать и делать чё тебе надо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 14:24     Алгоритм задержки
Еще ссылки по теме:

Поочередный вывод на экран без задержки всей программы C++
Определение задержки между посылками COM 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     Алгоритм задержки
Ответ Создать тему
Опции темы

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