PHP Warning: Missing argument 2 for vB_Postbit::construct_postbit(), called in ..../showpost.php on line 259 and defined in ..../includes/class_postbit.php on line 247
Арифметическое кодирование: верхняя и нижняя границы сошлись - Сообщение 619714 - С++ для начинающих
Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Арифметическое кодирование: верхняя и нижняя границы сошлись - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ строки, массивы символов http://www.cyberforum.ru/cpp-beginners/thread108461.html
1) #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char command; char fname;
C++ С++ классы, строки, указатели С++ только начал изучать, раньше учил Си - вроде все понятно было, но вот с новшествами данного языка как раз и возникли проблемы. Попытаюсь объяснить суть: 1) Составить класс, который будет... http://www.cyberforum.ru/cpp-beginners/thread108448.html
C++ Найти количество элементов, наиболее часто встречающихся в массиве
Найти кол-во элементов наиболее частых встречающихся в массиве. например массив: 123000 023400 023450 003456 0-не считается. очевидно тут 3. но как это найти? Найти надо не кол-во, а...
Текстовый редактор от Захарова C++
Так, от нечего делать захотелось создать свой текстовый редактор. Придумал даже код, но гдето есть две ошибки, так компилятор говорит. #include <iostream.h> #include <fstream.h> int main(void) {...
C++ Вычислить формулу http://www.cyberforum.ru/cpp-beginners/thread108425.html
Помогите пожалуйста с этой задачкой...Не знаю как тут вообще вычислить эту формулу...Нам лекций по С++ не дают, а я искал и ничего не нашел...Вот условие: Вычислить сумму ряда по приведенным в...
C++ Что такое матричный знакогенератор и как его написать необходимо написать Матричный знакогенератор.Что это такое? на языке С++ подробнее

Показать сообщение отдельно
ZigaZaga
0 / 0 / 0
Регистрация: 06.01.2010
Сообщений: 20

Арифметическое кодирование: верхняя и нижняя границы сошлись - C++

24.03.2010, 20:26. Просмотров 737. Ответов 0
Метки (Все метки)

ну не совсем сошлись..
Что делать если верхняя и нижняя грарицы отличаються на 1?(происходить зацикливание)

в статье Мастрюкова нашёл такое:
"Сделаем следующее: удалим вторые по значи¬мости цифры границ и ос¬тальные менее значимые сдвинем влево по описанным правилам. Старшие цифры останутся на месте. Затем увеличим специальный счетчик, чтобы запомнить то, что мы выбросили цифры.
Будем продолжать те же действия до тех пор, пока старшие цифры границ не совпадут. Затем в код сооб¬щения помещается совпавшая старшая цифра, а за ней равное счетчику количество девяток или нулей, в зависимости от того, к цифре верхней или нижней границы сошлись старшие цифры."

но мне не понятно как это реализовать, в том плане, что в статье речь идет о десятичных цифрах, а у меня же только биты. В смысле как я запишу девятки и нули? как вообще можно записать ДЕВЯТКУ?
буду рад любой ссылоке.
вот мой код без комментариев. хотя слова МОЙ и КОД тут не сильно уместны)) :
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
while(file.read((char *)&ch, sizeof(ch)))
{
    h = diapason[(unsigned char )ch];
    if((unsigned char)ch == 0)
        l = 0;
    else
        l = diapason[(unsigned char )ch - 1];
    LL = L;
    HH = H;
    L = LL + l * (HH - LL + 1) / delitel;
    H = LL + h * (HH - LL + 1) / delitel - 1;
    for(;;)
    {
        if(H < half)
            BitsToStream(false, bittoflow, arch);
        else if(L >= half)
        {
            BitsToStream(true, bittoflow, arch);
            L -= half;
            H -= half;
        }
        else if((L >= firstQTR)&&(H < thirdQTR))
        {
            bittoflow++;
            L -= firstQTR;
            H -= firstQTR;
        }
        else break;
        L = 2 * L;
        H +=  H + 1;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru