Написать программу расшифровки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Написать программу расшифровки»

textual
Листинг программы
#include <stdio.h>
 
int main() {
    int msg[]   = { 1,0,1, 0,1,0, 0,1,1 };
    int msg_len = sizeof(msg) / sizeof(*msg);
    if (msg_len % 3) {
        puts("ERR: (msg_len % 3) != 0");
        return 1;
    }
 
    int i;
    for (i = 0; i < msg_len - 2; i += 3) {
        printf("%d", ((i[msg] | msg[i+1]) && (i[msg] | msg[i+2])));
    }
    printf("\n");
    return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Объявлена массивная переменная msg типа int с длиной msg_len.
  2. Проверяется, что длина массива msg кратна трём. Если это не так, выводится сообщение об ошибке и программа завершается.
  3. Инициализируется счётчик i для цикла.
  4. В цикле for вычисляется значение по следующему алгоритму: — i[msg] обращается к элементу массива msg с индексом i. — (i[msg] | msg[i+1]) побитовое ИЛИ между текущим элементом и следующим. — (i[msg] | msg[i+2]) побитовое ИЛИ между текущим элементом и следующим после него. — Результат выводится на экран.
  5. После окончания цикла выводится символ новой строки.
  6. Программа возвращает 0, то есть успешно завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы