Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

отчет лаба 1 Дианов

.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
454.81 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО ВОЗДУШНОГО ТРАНСПОРТА

(РОСАВИАЦИЯ)

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» (МГТУ ГА)

Кафедра вычислительных машин, комплексов, сетей и систем.

Лабораторная работа защищена с оценкой ____________________

____________________

(подпись преподавателя, дата)

ЛАБОРАТОРНАЯ РАБОТА №1

по дисциплине «Теория информации и кодирования».

Тема: «Кодирования цифровой информации блоковым кодом Хэмминга».

Выполнила студентка группы ИС3-1

Магальник Екатерина Борисовна

Руководитель: Дианов Сергей Вячеславович

МОСКВА – 2024

1. Цель

Задачей лабораторной работы является получение практического опыта кодирования цифровой информации блоковым кодом Хэмминга на основе полученных теоретических сведений.

2. Задание

Закодировать сообщение (7, 4) - кодом Хэмминга, используя порождающую матрицу (7,4) - кода Хэмминга.

Исходное сообщение: 0111

Описание алгоритма кодирования:

Рисунок 1. Блок-схема программы кодирования.

3. Листинг программы

#include <iostream>

#include <conio.h>

using namespace std;

int main() {

setlocale(LC_ALL, "Russian");

int a;

int data[10];

int dataatrec[10], c, c1, c2, c3, i;

int r1 = 0; int r2 = 0; int r3 = 0; int r4 = 0; int r5 = 1; int r6 = 1; int r7 = 1;

int fin1, fin2, fin3, fin4;

int fin[4];

cout << "Исходное сообщение U (вводите посимвольно через enter): \n";

cin >> data[3];

cin >> data[5];

cin >> data[6];

cin >> data[7];

//формирование проверочных разрядов

data[1] = data[3] ^ data[5] ^ data[7];

data[2] = data[3] ^ data[6] ^ data[7];

data[4] = data[5] ^ data[6] ^ data[7];

cout << "\nКодовое слово V :\n";

for (i = 1; i < 8; i++)

cout << data[i];

cout << "\nВведите принятое слово R (вводите посимвольно через enter): \n";

for (i = 1; i < 8; i++)

cin >> dataatrec[i];

// проверка синдрома

c1 = dataatrec[1] ^ dataatrec[3] ^ dataatrec[5] ^ dataatrec[7];

c2 = dataatrec[2] ^ dataatrec[3] ^ dataatrec[6] ^ dataatrec[7];

c3 = dataatrec[4] ^ dataatrec[5] ^ dataatrec[6] ^ dataatrec[7];

c = c3 * 4 + c2 * 2 + c1;

if (c == 0) {

cout << "\nОшибки в передаче нет\n";

}

else {

cout << "\nОшибка в " << c << " бите ";

cout << "\n Кодовое слово V: ";

for (i = 1; i < 8; i++)

cout << data[i];

cout << "\n принятое слово R: ";

for (i = 1; i < 8; i++)

cout << dataatrec[i];

cout << "\n Кодовое слово V с исправленной ошибкой: ";

//исправление ошибки

if (dataatrec[c] == 0)

dataatrec[c] = 1;

else

dataatrec[c] = 0;

for (i = 1; i < 8; i++) {

cout << dataatrec[i];

}

}

_getch();

return 0;

}

4. Результат работы программы

Рисунок 2. Кодирование и декодирование сообщения без ошибки.

Рисунок 3. Кодирование и декодирование без ошибки с исправлением ошибки.

5. Анализ полученных результатов

  • в качестве проверочных символов были выбраны 1, 2 и 4 биты

  • ошибок в битах принятого слова не может быть больше 1

  • в случае совпадения принятого слова и кодового слово, программа сообщает об отсутствии ошибок в передаче

  • в случае несовпадения принятого слова и кодового слово, программа указывает на порядковый номер бита с ошибкой (начинается порядок с 1), выводит кодовое слово и принятое слово, а также выводит исправленное слово.

6. Вывод

В данной лабораторной работе были получены навыки кодирования цифровой информации блоковым кодом Хэмминга, разработана программа для этого, освоены алгоритмы кодирования посредством блокового кода Хэмминга.