Кодирование методом контроля чётности

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

code: #pascal
begin
  var k := ReadLnInteger('Введите k:'); k -= 1;
  var s := ReadLnString('Введите последовательность двоичных чисел:');
  Delete(s, s.Length - s.Length mod k + 1, k);
  WriteLn('Сокращаем количество символов до ', s.Length div k * k, ': ', s);
  for var i := 1 to s.Length div k do insert(' ', s, i * k + i);
  WriteLn('Преобразуем строку: ', s);
  for var i := 1 to s.Length div (k + 1) do
  begin
    var c := 0;
    for var j := (i - 1) * (k + 1) + 1 to i * (k + 1) - 1 do
      if s[j] = '1' then c += 1;
    s[i * (k + 1)] := chr(48 + c mod 2);
  end;
  WriteLn('Закодированная последовательность: ', s)
end.

автор: a1d4r

Поделиться:

Похожие статьи: