490. Кодирование

 

Последовательность битов кодируется следующим образом. Если значение предыдущего бита исходной последовательности отличается от значения текущего кодируемого бита, в результирующую последовательность записывается 1. Если значения битов не отличаются, то записывается 0. Для первого бита последовательности предыдущим является бит со значением 0.

Напишите программу, выполняющую кодирование.

 

Вход. Строка длиной не более 100 символов, состоящая только из 0 и 1, представляющая собой кодируемую последовательность битов.

 

Выход. Вывести результат кодирования.

 

Пример входа

Пример выхода

10010111

11011100

 

 

РЕШЕНИЕ

строки

 

Анализ алгоритма

В задаче следует промоделировать процесс кодирования.

 

Реализация алгоритма

Массив s содержит входную строку, t – результирующую.

 

char s[110], t[110];

 

Читаем входную строку. Изначально предыдущим символом является 0.

 

gets(s);

prev = '0';

 

Кодируем символы согласно правилу, описанному в условии.

 

for (i = 0; i < strlen(s); i++)

{

  if (s[i] == prev) t[i] = '0'; else  t[i] = '1';

  prev = s[i];

}

 

В конце строки t поставим ноль байт. Выводим результат кодирования.

 

t[i] = 0;

puts(t);

 

Реализация алгоритма – C++

Строка s содержит входную строку, res – результирующую.

 

string s, res;

 

Читаем входную строку. Изначально предыдущим символом является 0.

 

cin >> s;

p = '0';

 

Кодируем символы согласно правилу, описанному в условии.

 

for (i = 0; i < s.size(); i++)

{

  if (s[i] == p) res = res + '0';

  else res = res + '1';

  p = s[i];

}

 

Выводим результат кодирования.

 

cout << res << endl;