Код Хэмминга, Алгоритмы обнаружения ошибок |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Код Хэмминга, Алгоритмы обнаружения ошибок |
NePolina |
Сообщение
#1
|
Гость |
Разбираю алгоритмы обнаружения ошибок, в том числе Код Хэминга, но на Паскале не могу написать программу. Поделитесь мыслями...
|
Atos |
Сообщение
#2
|
Прогрессор Группа: Пользователи Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: 9 |
NePolina, зачем же спрашивать в чужой теме? Создай свою. И напиши подробнее, в чём именно возникают проблемы при составлении программы.
|
volvo |
Сообщение
#3
|
Гость |
To: NePolina
Поскольку ответа, что именно нужно реализовать, не последовало, я пока приведу программку, наглядно показывающую работу кода Хэмминга: uses crt; При старте программы вводится последовательность бит, которые должны быть переданы. Программа кодирует их по Хэммингу, и выводит результат - последовательность бит, готовую к передаче (при этом красным цветом выделены "избыточные" биты, не несущие информации, а используемые только для отслеживания ошибки). Затем вводится строка битов, полученная приемником информации, и после ее анализа выводится результат - есть ли ошибка, и в какой именно бите... (биты нумеруются СЛЕВА НАПРАВО (!!!) начиная с единицы). Идея программы взята отсюда: Код Хэмминга Вот лог работы программы: Цитата sent data [7] bits: 1110011 1 1 1 1 0 0 1 1 1 1 0 checking error status [0 = no error]: 0 received data [11] bits: 11111011110 checking error status [0 = no error]: 5 |
-NePolina- |
Сообщение
#4
|
Гость |
Спасибо, вот именно это мне надо было!!!
Просто не могу правильно выражать свои мысли. Еще раз ОГРОМНОЕ СПАСИБО!!!!! |
Pograp |
Сообщение
#5
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Реальное имя: Святослав Репутация: 0 |
программа работает немножко не корректно! введите 1001 в sent data и 1 0 0 1 1 208 208 1 208 0 0
в checking error ответ -1 я код Хеминга ещё так не проходил но писать как самого "умного" заставили объясните тупому |
volvo |
Сообщение
#6
|
Гость |
Pograp, чтобы программа выдавала корректный результат, надо следовать инструкциям... Тебе белым по черному написано:
Цитата sent data [7] bits: , следовательно sent data должно состоять из 7 бит, а ты привел 4...Идем дальше: что такое бит знаешь? 0 или 1... Так по какому праву в Цитата received data [11] bits: ты вводишь этот бред? вводи одиннадцать символов 0/1... Что ты хочешь, чтоб программа выдала? |
Dignity |
Сообщение
#7
|
Гость |
|
volvo |
Сообщение
#8
|
Гость |
Dignity
То, что ты нумеруешь ВСЕ биты слева направо - это сугубо твоя проблема. То, что написано крупным шрифтом касается не исходных 7-ми бит, а 11-ти бит результата (received data). А выделенные красным биты нумеруются справа налево, и как раз-таки и будут на позициях, соответствующих степеням двойки (посмотри внимательно код, и ты увидишь это. Или я по-твоему просто так ввел функцию is_power, возвращающую истину, когда аргумент - степень двойки?) |
Гость |
Сообщение
#9
|
Гость |
А для чего этот код в начале?
repeat inc(ctrl_bits); until (data_len + ctrl_bits + 1) <= (1 shl ctrl_bits); writeln('p = ', ctrl_bits); немогу въехать. |
volvo |
Сообщение
#10
|
Гость |
Цитата А для чего этот код в начале? Для того, чтобы вычислить число контрольных бит исходя из заданного числа бит-данных. |
Текстовая версия | 25.04.2024 9:16 |