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:

One thought on “A841

  1. Программа, конечно, сработает. Только зачем нужно это все запоминать в векторе и тем более, потом из него удалять? Почему не сделать обычную потоковую обработку? И зачем заранее сообщать количество сигналов? Нельзя просто читать всё подряд пока не кончится?
    Я засчитал, но сильно снизил балл за излишества.

Добавить комментарий