Форум программистов, компьютерный форум CyberForum.ru

Корректирующие коды - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заданный текст закодировать http://www.cyberforum.ru/cpp-beginners/thread775491.html
Заданный текст "Разрешение принтера – это количество точек, напечатанных на участке единичной длины." закодировать: а). равномерным кодом с кодовыми комбинациями наименьшей длины. б). кодом Хаффмана. Сравнить объёмы памяти, занимаемой текстом.
C++ Перевести заданное десятичное число в 2-ю, 8-ю, 16-ю, двоично-десятичную системы и обратно Перевести заданное десятичное число в 2-ю, 8-ю, 16-ю, двоично-десятичную системы и обратно. число 432 http://www.cyberforum.ru/cpp-beginners/thread775487.html
Составить программу вычисления значения функции для значения аргумента x, вводимого с клавиатуры C++
Формула f(x) = ln 3 ( x 2 +1 ) + arctg 2 ( x 2 + 1 ) Помогите, пожалуйста
C++ вычислить сумму элементов матрицы
Вычислить сумму элементов матрицы A кратных 3. Значения массива и количество строк и столбцов в массиве ввести с клавиатуры. Максимальная размерность массива 20 на 20. Очень прошу помочь
C++ Массивы структур, циклы http://www.cyberforum.ru/cpp-beginners/thread775460.html
Пишу программку из книги. Задание звучит так: Коrда вы вступите в Блаrотворительный Орден Проrраммистов (БОП), к вам могyт обращаться на заседаниях БОП по вашему настоящему имени, по должности либо секретному имени БОП. Напишите проrрамму, которая может выводить списки членов по настоящим именам, должностям, секретным именам либо по предпочтению caмoro члена. В основу положите следующую...
C++ Преобразовать целые числа в битовую посследовательность Имеется в файле посследовательность целых чисел X1,X2,X3,X4 unsigned long int, расположенных построчно. Нужно преобразовать эти целые числа в битовую посследовательность x1 1, x1 2, x1 3, x1 4, x1 5, ..., x1 31, x1 32, x2 1, x2 2, x2 3, x2 4, x2 5, ..., x2 31, x2 32, x3 1, ... (где x1 1 – младший бит первого числа, x2 32 – старший (32-й) бит второго числа). Не понимаю как это осуществить:(... подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4248 / 2780 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
31.01.2013, 16:48     Корректирующие коды

Не по теме:

Буквально пару дней назад сдал эказмен по этому предмету
Сейчас реально некогда писать, если завтра до вечера никто не ответит, то помогу.



Добавлено через 21 час 1 минуту
Так получилось, что сегодня тоже некогда (сессия), но немного помогу.
Цитата Сообщение от Лидия23 Посмотреть сообщение
а). преобразовать заданное информационное слово 10101101011 из 11 двоичных цифр в двоичное слово кода Хемминга (15,11);
из условия имеем
n = 15 (общее число символов)
k = 11 (число информационных символов)
m = 15 - 11 = 4 (число контрольных символов).
в коде Хэмминга контрольные символы располагаются на местах http://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{i}, где i - целое число. Т.е. для n = 15 и m = 4 имеем контрольные символы на позициях 1, 2, 4, 8
запишем наше число 10101101011
- - 1 - 0 1 0 - 1 1 0 1 0 1 1 там, где прочерк будут контрольные символы.
составим уравнения: уравнения составляются следующим образом - берутся символы начиная с http://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{i} по http://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{i} через http://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{i} (т.е. с первого по одному через один, потом со второго по два через два, далее с четвертого по четыре через четыре и т.д.).
а1 + а3 + а5 + а7 + а9 = 0
а2 + а3 + а6 + а7 + а10 + а11 + а14 + а15 = 0
а4 + а5 + а6 + а7 + а12 + а13 + а14 + а15 = 0
а8 + а9 + а10 + а11 + а12 + а13 + а14 + а15 = 0
где аN - биты нашего кода, отчет ведется слева на право и начинается с одного, а "+" означает сложение по модулю два (сумма по модулю 2 - это остаток от деления на 2)
выведем уравнения кодирования (просто переносим неизвестные символы в правую часть ур-я)
а1 = а3 + а5 + а7 + а9
а2 = а3 + а6 + а7 + а10 + а11 + а14 + а15
а4 = а5 + а6 + а7 + а12 + а13 + а14 + а15
а8 = а9 + а10 + а11 + а12 + а13 + а14 + а15

высчитаем неизвестные биты
а1 = 1 + 0 + 0 + 1 = 0
а2 = 1 + 1 + 0 + 1 + 0 + 1 + 1 = 1
а4 = 0 + 1 + 0 + 1 + 0 + 1 + 1 = 0
а8 = 1 + 1 + 0 + 1 + 0 + 1 + 1 = 1
теперь можем закодировать наше сообщение, подставив вместо прочерков подсчитанные биты
0 1 1 0 0 1 0 1 1 1 0 1 0 1 1
готово!

Цитата Сообщение от Лидия23 Посмотреть сообщение
б). дано двоичное слово 101111001011101 кода Хемминга (15,11). Проверить, была ли допущена в этом слове одиночная ошибка. Исправить одиночную ошибку, если она есть.
Код Хэмминга допускает поиск двойных ошибок либо поиск и исправление одиночной ошибки. Поверим условию задания и будем искать одиночную ошибку.
тут делается все, тоже самое, что выше, т.е. нам нужны ур-я. Они у нас уже есть
а1 + а3 + а5 + а7 + а9 = 0
а2 + а3 + а6 + а7 + а10 + а11 + а14 + а15 = 0
а4 + а5 + а6 + а7 + а12 + а13 + а14 + а15 = 0
а8 + а9 + а10 + а11 + а12 + а13 + а14 + а15 = 0
имея код 1 0 1 1 1 1 0 0 1 0 1 1 1 0 1 посчитаем ур-я
0
0
0
1
имеем синдром ошибки S = 1000 (двоичное) = 8 (десятичное), т.е. имеем ошибку в 8 разряде (в коде Хэмминга синдром ошибки указывает на номер разряда с ошибкой, при этом отчет ведется с нуля справа на лево). Исправим ошибку
1 0 1 1 1 1 1 0 1 0 1 1 1 0 1
все!

Код писать некогда, но теперь имея решенное задание думаю это уже не проблема, любой с минимальными знаниями С++ сможет это сделать.
 
Текущее время: 21:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru