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

Выделение "слов" из последовательности бит - C++

Восстановить пароль Регистрация
 
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
19.02.2013, 20:52     Выделение "слов" из последовательности бит #1
Имеется файл из вещественных чисел, я считываю его и преобразовываю в unsigned long домножив каждое вещественное число на 2^32. Затем эту последовательность целых чисел преобразовываю в битовую последовательность. И в этой битовой последовательности мне нужно выделять слова по примеру и Подсчитать количество "слов" в "словаре" :
№ бита Словарь
Бит Новое слово? Слово № слова
1 0 Да 0 (бит 1) 1
2 1 Да 1 (бит 2) 2
3 0 Нет
4 1 Да 01 (биты 3-4) 3
5 1 Нет
6 0 Да 10 (биты 5-6) 4
7 0 Нет
8 1 Нет
9 0 Да 010 (биты 7-8-9) 5
10
Всё понятно до выделения слов

Добавлено через 3 часа 11 минут
хелп
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2013, 20:52     Выделение "слов" из последовательности бит
Посмотрите здесь:

C++ Посчитать в предложении количество слов, заканчивающихся на букву "о"
C++ Создание переменной типа "чар" из последовательности бит
Дан текст, определить количество слов "кот" C++
C++ Дан текст, состоящий не менее чем из пяти слов. Сформировать стек из тех слов, в которых присутствует буква "Е"
C++ Дан текст, состоящий не менее чем из пяти слов. Сформировать стек из тех слов, в которых присутствует буква "Е"
C++ В тексте определить количество слов с буквой "О" и отобразить их
C++ Найти слово в фразе из 3 слов, которое начинаеться на букву "M"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
3086 / 1861 / 278
Регистрация: 27.08.2010
Сообщений: 5,006
Записей в блоге: 1
19.02.2013, 21:29     Выделение "слов" из последовательности бит #2
Всё понятно до выделения слов
Признаться, не все.

Если речь идет о вещественных числах типа float (32 bits), рассматриваемых (cast) как unsigned long (32 bits), то "домножив" такое число на 2^32 (иными словами, сдвинув на 32 разряда влево, вы гарантированно получаете 0. Если вы умножаете его как вещественное на вещественное 2^32, то это никак не делает его целым типа unsigned long.

Остальное еще более непонятно.
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
20.02.2013, 08:24  [ТС]     Выделение "слов" из последовательности бит #3
Цитата Сообщение от gazlan Посмотреть сообщение
Признаться, не все.

Если речь идет о вещественных числах типа float (32 bits), рассматриваемых (cast) как unsigned long (32 bits), то "домножив" такое число на 2^32 (иными словами, сдвинув на 32 разряда влево, вы гарантированно получаете 0. Если вы умножаете его как вещественное на вещественное 2^32, то это никак не делает его целым типа unsigned long.

Остальное еще более непонятно.
Допустим у меня есть файл в котором уже хранятся целые числа unsigned long, мне надо считать их в массив и побитово выделить слова по примеру:
010110
1 слово 0
2 слово 1
3 слово 01
4 слово 10
Как выделять побитово я пока не разобралась
XRuZzz
Антикодер
603 / 504 / 25
Регистрация: 15.09.2012
Сообщений: 2,450
20.02.2013, 09:23     Выделение "слов" из последовательности бит #4
какой будет результат если произвести операцию логического побитового "и" над этими числами
00000011 и 00010110
?

а так какой будет результат
00000001 и 00010110
?

Битовые операции в вики
gazlan
3086 / 1861 / 278
Регистрация: 27.08.2010
Сообщений: 5,006
Записей в блоге: 1
20.02.2013, 12:08     Выделение "слов" из последовательности бит #5
мне надо считать их в массив и побитово выделить слова
А можно услышать общую постановку задачи?

Сдается, вам хочется реализовать битовый вариант LZ78.

Иными словами, если вы работаете с битовым потоком, то неважно, целые там числа или какие-то еще и читать
надо побитово, а не словами.

В любом случае, вам требуются словарь и парсер. Дальше - классика: Имеем пустой словарь и пустое слово. Парсер считывает в слово очередной бит и проверяет, есть ли это слово в словаре. Если нет - заносит его в словарь, если есть - добавляет к нему бит и проверяет... Для каждого слова, словарь хранит все его префиксы.

Или можете сразу строить суффиксное дерево.

P.S.
Вероятно, ваша тема больше подходит для раздела "алгоритмы".
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
20.02.2013, 17:51  [ТС]     Выделение "слов" из последовательности бит #6
Цитата Сообщение от gazlan Посмотреть сообщение
А можно услышать общую постановку задачи?

Сдается, вам хочется реализовать битовый вариант LZ78.

Иными словами, если вы работаете с битовым потоком, то неважно, целые там числа или какие-то еще и читать
надо побитово, а не словами.

В любом случае, вам требуются словарь и парсер. Дальше - классика: Имеем пустой словарь и пустое слово. Парсер считывает в слово очередной бит и проверяет, есть ли это слово в словаре. Если нет - заносит его в словарь, если есть - добавляет к нему бит и проверяет... Для каждого слова, словарь хранит все его префиксы.

Или можете сразу строить суффиксное дерево.

P.S.
Вероятно, ваша тема больше подходит для раздела "алгоритмы".
Да совершенно верно, мне нужно считывать побитово и проверять есть ли такое слово в словаре, каждое новое слово записывать в счётчик и в конце вывести число слов в словаре, т.е. 0 1 10 01 101 010 и т.д.
gazlan
3086 / 1861 / 278
Регистрация: 27.08.2010
Сообщений: 5,006
Записей в блоге: 1
20.02.2013, 18:28     Выделение "слов" из последовательности бит #7
Ну, так а в чем проблема?

Побитовое чтение из потока? См., например, у Марка Нельсона) - автора известной книги (и/или в исходниках почти любого архиватора)

http://marknelson.us/attachments/199...ession/bitio.h
http://marknelson.us/attachments/199...ession/bitio.c

LZ78/LZW?

Поищите в поисковиках "The Data Compression Book", посмотрите статьи:

http://marknelson.us/1989/10/01/lzw-data-compression/
http://marknelson.us/2011/11/08/lzw-revisited/

Большая (хотя и не слишком "свежая") подборка литературы, программ и исходных кодов по сжатию:
http://www.compression.ru/download/

Можете еще посмотреть http://en.wikipedia.org/wiki/Radix_tree, но того, что выше должно хватить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2013, 18:36     Выделение "слов" из последовательности бит
Еще ссылки по теме:

Посчитать количество слов которые начинаются на букву "Б" C++
C++ Формула Шеннона "Энтропия, бит"
Подсчитать количество слов, содержащих три буквы "c" C++
C++ Найти количество слов в заданном тексте, которые заканчиваются на "ая"
C++ Считывание слов из потока cin и вывод их в поток cout, с заменой нежелательных слов словом "Bleep"

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

Или воспользуйтесь поиском по форуму:
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
20.02.2013, 18:36  [ТС]     Выделение "слов" из последовательности бит #8
Цитата Сообщение от gazlan Посмотреть сообщение
Ну, так а в чем проблема?

Побитовое чтение из потока? См., например, у Марка Нельсона) - автора известной книги (и/или в исходниках почти любого архиватора)

http://marknelson.us/attachments/199...ession/bitio.h
http://marknelson.us/attachments/199...ession/bitio.c

LZ78/LZW?

Поищите в поисковиках "The Data Compression Book", посмотрите статьи:

http://marknelson.us/1989/10/01/lzw-data-compression/
http://marknelson.us/2011/11/08/lzw-revisited/

Большая (хотя и не слишком "свежая") подборка литературы, программ и исходных кодов по сжатию:
http://www.compression.ru/download/

Можете еще посмотреть http://en.wikipedia.org/wiki/Radix_tree, но того, что выше должно хватить.
Спасибо буду искать!
Yandex
Объявления
20.02.2013, 18:36     Выделение "слов" из последовательности бит
Ответ Создать тему
Опции темы

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