Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Найти количество нулевых бит в строке


Автор: ДЫМ 7.3.2008, 13:17
Помогите решить задачу. 
Решить двумя способами (простым способом и быстрым способом) следующую задачу: написать
функцию, которая возвращает количество нулевых бит в строке (не считая нулевой символ в конце строки).
Простой способ понятен - перебираем все символы в строке, считаем количество встретившихся нулевых, но вот что за быстрый способ?
Помогите, с меня плюсик в репутацию.

Автор: bems 7.3.2008, 13:25
ну можно заранее составить таблицу символов и соответствующих количеств бит. А потом щитать используя эту таблицу

Автор: ДЫМ 7.3.2008, 13:37
Цитата

ну можно заранее составить таблицу символов и соответствующих количеств бит. А потом щитать используя эту таблицу


А поподробнее можно?

Автор: bems 7.3.2008, 13:41
Код

const counts:array [char] of byte=(8,7,7...);
var i,count:integer;
begin
count:=0;
for i:=1 to length(str) do
 inc(count,counts[str[i]]);
end;


Добавлено через 1 минуту и 25 секунд
а это (8,7,7...) можно сгенерить один раз другой программой и вставить в исходник smile

Автор: ДЫМ 7.3.2008, 16:07
Цитата

а это (8,7,7...) можно сгенерить один раз другой программой и вставить в исходник 


А откуда взялось это (8,7,7...)? Вообще, что это такое? Как его сгенерить - покажи.

Автор: bems 10.3.2008, 19:48
ну в нулевом символе все 8 бит нулевые, в первим и втором их по 7 и тд. Сгенерировать их так же, как и в обычном ("не быстром") решении.
Цитата(ДЫМ @  7.3.2008,  13:17 Найти цитируемый пост)
Простой способ понятен - перебираем все символы в строке, считаем количество встретившихся нулевых
если тут тебе пи правда все понятно, то почему возникают такие вопросы?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)