Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2013, 17:24   #1
][acker
Пользователь
 
Аватар для ][acker
 
Регистрация: 19.10.2011
Сообщений: 12
По умолчанию Увеличение повторов байт

К примеру есть массив одномерный массив байт: 231, 128, 55, 121, 44. У кого есть какие идеи для того чтобы увеличить количество повторов байт? Т.е. например идеал когда 1 байт встречается в каждой ячейке: 231, 231, 231, 231, 231. Моя цель обработать данные перед сжатием.

Последний раз редактировалось ][acker; 29.09.2013 в 19:14.
][acker вне форума Ответить с цитированием
Старый 29.09.2013, 18:12   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что бы достичь идеала можно поместить в каждый элемент массива одно и тоже число
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.09.2013, 18:17   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,887
По умолчанию

Код:
for i:=Low(MyArr)+1 to High(MyArr) do MyArr[i]:=MyArr[Low(MyArr)];
northener вне форума Ответить с цитированием
Старый 29.09.2013, 19:09   #4
][acker
Пользователь
 
Аватар для ][acker
 
Регистрация: 19.10.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Что бы достичь идеала можно поместить в каждый элемент массива одно и тоже число
Но нужно чтобы после приведения всего массива к одному числу, потом можно было его распознать, при чем не существенно увеличить чисто байт для меток на распознание.
][acker вне форума Ответить с цитированием
Старый 29.09.2013, 19:12   #5
][acker
Пользователь
 
Аватар для ][acker
 
Регистрация: 19.10.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Код:
for i:=Low(MyArr)+1 to High(MyArr) do MyArr[i]:=MyArr[Low(MyArr)];
Можно просто от 256 отнять значение каждой ячейки массива, а потом прибавить, но в связи с этим увеличится количество байт на ссылки вдвое.
][acker вне форума Ответить с цитированием
Старый 29.09.2013, 20:25   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Я один не понимаю что хочет ТС..
Зачем Вам увеличивать кол-во байт, если затем Вы хотите всё это сжать?
Кстати, если заморочиться с жатием, то можно сделать так.. Пусть всё числа в массиве НЕ првевышают 255.. Тогда максимум, ln(255) разрядов в двоичном числе.. Теперь найдет наибольший ln. Если он = 8, то всё.. облом.. если меньше, то запомнить это число(max).. сдвинуть разряды в двоичном числе на 8 - max.. а в конец начать записывать биты следущего числа..

НО ИМХО тут нужно придумывать что-то более совершенно, или просто забить...
(Например 255, 1,1,1,1).. Увы так и останется..
Хотя можно найти границу, с которой применение этого алгоритма не будет пустой тратой времеи.. запомнить эту границу, запомнить max и снова плясать..
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление повторов из файла Eshansky Visual C++ 2 17.07.2013 11:18
Поиск повторов volanddd Microsoft Office Excel 1 30.04.2013 09:34
Выборка повторов illyuziy SQL, базы данных 18 16.11.2011 21:52
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) Beren42 Помощь студентам 0 15.12.2010 20:32
Ограничение повторов ТРОЯН=) Помощь студентам 5 06.03.2009 09:11