![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
18192123 |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Здравствуйте!
Предположим в качестве входных данных имеется двоичная комбинация, каждый разряд хранится в соответствующем элементе массива (char m[7]={0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0). И будем ассоциировать для себя этот массив с полиномом x^6 + x^5 + x^3. Будет ещё один фиксированный полином: char g[4]={0x1, 0x0, 0x1, 0x1} (g=x^3 + x + 1). Задача заключается в делении m на g..Интересует остаток от деления, который в данном примере будет char r[3]={0x0, 0x0, 0x1} (r = 1). пример деления я привела в прикреплённом документе.. Затрудняюсь с тем, как это реализовать..объясните пожалуйста! Эскизы прикрепленных изображений ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Чтобы это реализовать, надо сначала правильно сделать это столбиком на бумаге. Ты этого не сделала. Потому что проверяется деление полиномов чем? Угу, именно умножением. Умножаем полученное в твоем примере частное на делитель, и прибавляем остаток. Должны получить делимое:
(x3+x+1)*(x3+x2+x+1) + 1 = ? Раскрываем скобки, приводим подобные, получаем: x6+x5+2x4+3x3+2x2+2x+2. Неверно. Нашелся вот такой "делитель полиномов", написанный очень давно, еще под ДОС-овским ТурбоС: #include <stdlib.h>, ответ, который он выдает: частное = (x3+x2-x-1), остаток = (2x+1). Вот если это проверить умножением, то получаем исходное делимое... |
18192123 |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Надо было мне сразу уточнять, что требуется несколько иное...
Такое "деление полиномов", как в прикреплённом мною документе в посте #1, используется при циклическом кодировании, соответственно, если проверять полученное мною умножением (вместо обычного сложения использовать суммирование по модулю два, т.е. исключающее ИЛИ), то всё сходится: (x^3 + x^2 + x + 1)(x^3 + x + 1) + 1 = x^6 + x^4 + x^3 + x^5 + x^3 + x^2 + x^4 + x^2 + x + x^3 + x + 1 + 1 = x^6 + x^5 + x^3 (т.е. х с одинаковыми степенями взаимоуничтожились).. Вот тут так же есть пример того, что мне нужно реализовать.. INTUIT.ru |
18192123 |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
#include <stdlib.h> Заменила вычитание на XOR - вроде получается результат, который мне нужен. Сообщение отредактировано: 18192123 - 29.04.2009 13:43 |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Ну, так замени в 23-ей строке той программы, что я привел, вычитание на сложение по модулю 2:
for (i=0; i<s2; i++) {и получишь частное = 1*x^3 + 1*x^2 + 1*x + 1, и остаток = + 1 |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 14:47 |