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

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

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

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

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

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

Задержки в Sleep - C++
Друзья, есть код #include <iostream> #include<Windows.h> using namespace std; struct mtime { int min = 0;

функция задержки - C++
Подскажите, как называется функция задержки? например в делфи delay(1000)-подождать секунду, а в с++ ?

Функция задержки времени - C++
Здравствуйте! Пишу программу на Visual Studio C++, и возник вопрос. Как сделать допустим вывод информации "Программа завершена!" и затем...

Реализация трехсекундной задержки - C++
как реализовать задержку на 3 секунды в ходе выполнения программы?

нет задержки экрана - C++
#include <iostream> using namespace std; int main () { int fleas; cout<<"Yow many fleas does your cat have?\n"; ...

Цикл временной задержки - C++
С. Прата, Язык программирования С++, глава 5, построение цикла задержки Проверьте, пожалуйста, правильно ли я понял. // использование...

12
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
28.01.2013, 00:31 #2
чем вам эта функция не нравится? Можно через таймер делать, конечно, но зачем?
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,467
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++);
методом научного тыка подбираешь диапазоны и количество циклов.
0
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
28.01.2013, 02:11 #4
kravam, такое только при дебаге работает, в релиз версии не прокатит.
0
NoMasters
Псевдослучайный
1759 / 1102 / 73
Регистрация: 13.09.2011
Сообщений: 3,139
28.01.2013, 02:13 #5
UnsKneD, отключи оптимизацию, будет работать. Но не нужно.
ТС, чем именно тебе не угодил слип?
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,467
28.01.2013, 02:20 #6
UnsKneD, не знаю я ни про какие дебаги; а вообще в цикле можно что-нибудь делать. Тогда везде прокатит.
0
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
28.01.2013, 02:38 #7
NoMasters, можно конечно, но глупо когда есть Sleep();
0
Avazart
Эксперт С++
7212 / 5384 / 285
Регистрация: 10.12.2010
Сообщений: 23,787
Записей в блоге: 17
28.01.2013, 03:01 #8
По идее должно работать
C++
1
for (volatile int n=0 ; n<1000000; n++);
0
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% загрузка процессора.

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

Просто не хочется изобретать велосипед.
0
0x10
2465 / 1637 / 239
Регистрация: 24.11.2012
Сообщений: 4,036
28.01.2013, 12:48 #10
fuelcs, можно в одном потоке выводить символы с задержкой, в другом - выполнять вычисления.
0
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 минуту
А эти ваши циклы на разных машинах по-разному работать будут, даже если отключить оптимизацию
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,467
28.01.2013, 13:22 #12
Цитата Сообщение от fuelcs Посмотреть сообщение
Нужно выполнять определенные действия (вывод символов на экран) через определенные промежутки времени, но не останавливать программу.
ну так многопоточное программирование самое оно. Делаешь два потока. В одном используешь ту же самую Sleep. И когда один поток остановится, второй будет работать и делать чё тебе надо.
0
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() нужно переводить в секунды? Что бы задержка была одинакова на любой машине?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 14:24
Привет! Вот еще темы с ответами:

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки ) - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void lab () { int s1 = 0; int s2 =...

Определение задержки между посылками COM - C++
Здравствуйте, возможно ли определить временную задержку между байтами принимаемыми через COM?? Добавлено через 1 час 47 минут упп

Библиотека с функциями подачи и задержки звука - C++
какую библиотеку подключить в Visual studio 2013 чтобы использовать функции задержки и подачи звукового сигнала? Добавлено через 7...

Подскажите куда вставить код с функцией задержки? - C++
const int in3 = 2; const int in4 = 3; const int en2 = 5; void setup() { pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); ...


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

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
28.01.2013, 14:24
Ответ Создать тему
Опции темы

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