Проблема с задачей на паскале
У меня возник вопрос к задаче Условие:Декодирование методом контроля четности. Вводится k – число символов в блоке и последовательность двоичных символов, длина которой кратна k. Если кратность нарушается, то последние символы последовательности игнорируются. В каждой комбинации из k символов осуществляется проверка четности: если четность не нарушена, то первые (k-1) символов данной комбинации добавляются в результирующую последовательность, если же четность нарушается, то счетчик количества ошибок увеличивается на единицу. По окончании декодирования всей входной последовательности символов результирующая последовательность, а также значение счетчика ошибок выводятся на экран. Имеется код к кодированию, как переписать в декодирование. Подскажите, пожалуйста, алгоритм, как можно переделать программу. Заранее благодарю экспертов.
Код программы к кодированию
begin
var k := ReadLnInteger('Введите k:');k -= 1;
var b := ReadLnString('Введите последовательность двоичных чисел:');
Delete(b, b.Length - b.Length mod k - 1, k);
WriteLn('Сокращаем количество символов до ', b.Length div k * k, ': ', b);
for var i := 1 to b.Length div k do insert(' ', b, i * k + i);
WriteLn('Преобразуем строку: ', b);
for var i := 1 to b.Length div (k + 1) do
begin
var c := 0;
for var j := (i - 1) * (k + 1) + 1 to i * (k + 1) - 1 do
if b[j] = '1' then c += 1;
b[i * (k + 1)] := chr(48 + c mod 2);
end;
WriteLn('Закодированная последовательность: ', b)
end.