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

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

Войти
Регистрация
Восстановить пароль
 
fair7
8 / 8 / 0
Регистрация: 31.12.2010
Сообщений: 81
Записей в блоге: 1
#1

Как добиться 40 миллисекунд в консоле? - C++

08.06.2014, 19:21. Просмотров 290. Ответов 3
Метки нет (Все метки)

Функция Sleep() не пойдёт


Написал такой код, но он даст 26 кадров в секунду вместо 25.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>  // D7R printf
#include <conio.h>  // D7R _getch
#include<sys\timeb.h>
timeb tms;
short ms15()
{
    ftime(&tms);
    return  tms.millitm;
}
#define L 123
short tim[L];
int main()
{
    char one=1,compared;
    short ti,tb=0;    
    for(int c=L;c;)
    {        
        ++ti=ms15();
 
        if((ti-tb)>compared||(ti-tb)<0)
        {
            if(one%2)compared=44;
            else compared=29;
            tim[--c]=ti-tb;
            tb=ti;
            ++one;
        }
    }
    tb=0;printf("\n");
    for(int c=L-1;c;)
    {
        printf("\n   tim=%d",tim[c-1]);
        if(tim[c-1]>0)
        {   tb+=tim[--c];
            printf("\tif(tim[c]<0) tb=%d",tb);
        }
        else
        {tb+=1000+tim[--c];
            printf("\t1000+tim[--c]   ==   %d",1000+tim[c]);
        }
    }
    printf("\n\ntb=%d",tb);
    float fb=(float)tb/(L-1);
    printf("\n\n%f",fb);
    printf("\n\n 4ACTOTA KADPOB == %f",1000/fb);
    
    getch();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2014, 19:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как добиться 40 миллисекунд в консоле? (C++):

Как сделать структуру (как в таблице) выводимых в консоле данных? - C++
Вот этой проге? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;stdlib.h&gt; #include &lt;Windows.h&gt; using...

Как сделать управляемый элемент в консоле - C++
Всем привет. Нужна Ваша помощь. Как можно сделать управляемого &quot;человечка в консоли&quot;? Он должен ходить по нажатию клавиш в...

C++ Как реализовать поиск на Русском в консоле - C++
Создать структуру ВИДЕОМАГАЗИН со следующими полями: - Название фильма - Режиссер - Жанр - Рейтинг популярности - Цена...

Как установить в консоле UTF - 8? | Windows console - C++
Доброго времени суток! Как можно установить UTF-8 в консоле Windows? (консольном приложении) На данный момент возвращает, ОЧЕНЬ...

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

Программа на цикл for (как добиться вывода на экран?) - C++
Программа на цикл for(помогите добиться вывода на экран), повторять в цикле нужно вот это выражение: (x^i+sin(ix))/3^i от i:=1 до...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ValeryS
Модератор
6634 / 5041 / 466
Регистрация: 14.02.2011
Сообщений: 16,852
08.06.2014, 19:23 #2
В общем случае никак
Винда не система реального времени
но можно попробовать использовать мультимедийные таймеры
но это непереносимо
0
VTsaregorodtsev
353 / 334 / 48
Регистрация: 19.02.2010
Сообщений: 1,417
08.06.2014, 21:19 #3
fair7, не извращайтесь с консолью - а сразу переходите к технологиям работы с видео. Под виндой - это Video for Windows (старая, тормозная и мало умеющая) и DirectShow, а может и ещё что-то (давно уже не занимался системным программированием именно в этой области - не знаю новинок Семёрки-Восьмёрки).
В общем, у видеоплейеров же нет такой проблемы? Более того - они нормально стыкуют непрерывно идущий звук с дискретно идущими кадрами
0
fair7
8 / 8 / 0
Регистрация: 31.12.2010
Сообщений: 81
Записей в блоге: 1
12.06.2014, 23:27  [ТС] #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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>  // D7R printf
#include <conio.h>  // D7R _getch
#include<sys\timeb.h>
timeb times;
short ms15()// 15,625
{
    ftime(&times);
    return  times.millitm;
}
long stopwatch()//stopwatch - CEKyHDOMEP
{
    ftime(&times);
    return  times.time;
}
#define L 123
short tim[L];
int main()
{
    long secbuf=stopwatch();
    short ti,tb=0;
    char images=0,interval_time=45,pass=2;
    for(int c=L;c;)
    {
        ti=ms15();
        if((ti-tb)>interval_time||(ti-tb)<0)
        {
            if(images<24)
            {
                if(images%pass)interval_time=45;
                else interval_time=30;
 
                tim[--c]=ti-tb;
                tb=ti;
                ++images;
                switch(images){case 16:pass=4;}
            }
            else if(secbuf-stopwatch())
            {
                secbuf=stopwatch();
                ti=ms15();
                tim[--c]=ti-tb;// printf("\n_ %i",tim[c]);// D7R nPOBEPKU
                tb=ti;
                images=0;
                pass=2;
            }
        }
    }
    tb=0;printf("\n");
    for(int c=L-1;c;)
    {
        printf("\n   tim=%d",tim[c-1]);
        if(tim[c-1]>0)
        {   tb+=tim[--c];
            printf("\t tb=%d",tb);
        }
        else
        {   tb+=1000+tim[--c];
            printf("\t1000+tim[c]== %d",1000+tim[c]);
        }
    }
    printf("\n\n      O5SEE BPEMR == %d",tb);
    float fb=(float)tb/(L-1);
    printf("\n\n CPEDHEE 3HA4EHUE == %f",fb);
    printf("\n\n   4ACTOTA KADPOB == %f",1000/fb);
 
    getch();
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2014, 23:27
Привет! Вот еще темы с ответами:

Получение миллисекунд - C++
Всем здрасти! У меня стоит задача получить текущее время... которое помимо даты и общего времени будет иметь миллисекунды. Обычно решал...

Текущее время с точностью до миллисекунд - C++
Здравствуйте! Столкнулся со следующей проблемой. Нужно узнать текущее время с точностью до миллисекунд, использую time.h, но там можно...

Как добиться возможности компилить с поддержкой нового стандарта в Code Blocks (MinGW)? - C++
Народ как добиться возможности компилить с поддержкой нового стандарта ?

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


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

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

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