A841

Задача. «Исправление ошибок». Пусть по некоторому каналу связи передается сообщение, имеющее вид последовательностей нулей и единиц (или, аналагично, точек и тире). Из-за помех, возможен ошибочный прием некоторых сигналов: нуль может быть воспринят как единица и наоборот. Можно передавать каждый сигнал трижды, заменяя, например, последовательность 1, 0, 1 последовательностью 1, 1, 1, 0, 0, 0, 1, 1, 1. Три последовательные цифры при расшифровке заменяются той цифрой, которая встречается среди них по крайне мере дважды. Такое утраивание сигналов существенно повышает вероятность правильного приема сообщения. Написать программу расшифровки.

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

Код программы можно посмотреть тут

Related Images: