Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Счетчик последовательных групп из единиц в массиве байтов на Delphi

Delphi , Синтаксис , Массивы

Вопрос, поднятый в этом запросе, заключается в подсчете количества последовательных групп, содержащих хотя бы один установленный в единицу байт, в массиве байтов, разделенном на логические группы по четыре байта. Рассмотрим, как можно решить эту задачу программно, используя язык программирования Object Pascal в среде разработки Delphi.

Описание задачи

Дан массив из 24 байтов, состоящий из нулей и единиц:

011000100000001000000111

Этот массив логически разделен на группы по четыре байта каждая:

0110 0010 0000 0010 0000 0111

Необходимо подсчитать количество последовательных групп, в которых хотя бы один байт установлен в единицу. В приведенном примере таких групп две.

Решение задачи

Для решения задачи можно использовать следующий подход. Мы будем перебирать группы и для каждой проверять, содержит ли она единицы. Если группа не содержит единиц, то это означает конец последовательности, и мы можем начать подсчет новой последовательности с текущей группы.

Пример кода на Object Pascal, который решает поставленную задачу:

program CountNonNullGroupSequenceLength;
{$APPTYPE CONSOLE}
uses
  System.SysUtils;

function CountNonNullGroupSequenceLength(Values: PByte; ValuesCount: Integer): Integer;
var
  Groups: PInteger;
  i, counter: Integer;
begin
  Groups := @Values[0];
  Result := 0;
  counter := 0;
  for i := 0 to (ValuesCount shr 2) - 1 do
  begin
    if Groups[i] <> 0 then
      Inc(counter)
    else
    begin
      Result := Max(Result, counter);
      counter := 0;
    end;
  end;
  Result := Max(Result, counter);
end;

var
  Bytes: array[0..23] of Byte = [1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1];
  SequenceLength: Integer;
begin
  SequenceLength := CountNonNullGroupSequenceLength(@Bytes[0], Length(Bytes));
  WriteLn('Количество последовательных групп с единицами: ', SequenceLength);
  ReadLn;
end.

В этом коде функция CountNonNullGroupSequenceLength принимает указатель на первый элемент массива байтов и его длину. Она возвращает количество последовательных групп, содержащих хотя бы один байт со значением единицы.

Заключение

Мы рассмотрели задачу подсчета последовательных групп из единиц в массиве байтов и предложили решение на языке Object Pascal, которое можно использовать в среде разработки Delphi. Этот код можно модифицировать и использовать в различных задачах, связанных с обработкой массивов данных.

Создано по материалам из источника по ссылке.

Задача состоит в подсчете количества последовательных групп, содержащих хотя бы один установленный в единицу байт, в массиве байтов, разделенном на группы по четыре байта, с использованием языка программирования Object Pascal в среде Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Массивы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-14 13:05:01/0.0030269622802734/0