Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2010, 23:40   #1
lena-lena
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 15
Вопрос Кодирование. Коды Рида-Соломона

Следующий код нужно реализовать на Си, но как? помогите пожайлуста)))

Листинг 1. Исходный текст простейшего кодера Рида-Соломона



/*-----------------------------------------------------------------------------------------------------

** кодировщик Рида-Соломона

* ========================

* кодируемые данные передаются через массив data[i], где i=0..(k-1), а сгенерированные символы четности

* заносятся в массив b[0]..b[2*t-1]. Исходные и результирующие данные должны быть представлены

* в полиномиальной форме (т.е. в обычной форме машинного представления данных).

* Кодирование производится с использованием сдвигового feedback-регистра, заполненного соответствующими

* элементами массива g[] с порожденным полиномом внутри, процедура генерации которого уже обсуждалась

* в предыдущей статье. Сгенерированное кодовое слово описывается следующей формулой:

* с(x) = data(x)*x(n-k) + b(x)

*

* на основе исходных текстов Simon Rockliff, от 26.06.1991, распространяемых

* по лицензии GNU

––––––––––––––––––––––––––––––––––– ––––––––––––––––––––––---------------------------------------------*/

encode_rs()

{

int i, j;

int feedback;



// инициализируем поле бит четности нулями

for (i = 0; i < n - k; i++) b[i] = 0;



// обрабатываем все символы исходных данных справа налево

for (i = k - 1; i >= 0; i--)

{

// готовим (data[i] + b[n – k –1]) к умножению на g[i], т.е. складываем очередной «захваченный»

// символ исходных данных с младшим символом битов четности (соответствующего «регистру» b2t-1,

// см. рис. 2) и переводим его в индексную форму, сохраняя результат в регистре feedback,

// как мы уже говорили, сумма двух индексов есть произведение полиномов

feedback = index_of[data[i] ^ b[n – k - 1]];



// есть еще символы для обработки?

if (feedback != -1)

{

// осуществляем сдвиг цепи bx-регистров

for (j=n-k-1; j>0; j--)

// если текущий коэффициент g – это действительный (т.е. ненулевой коэффициент,

// то умножаем feedback на соответствующий g-коэффициент и складываем его

// со следующим элементом цепочки

if (g[j]!=-1) ї

b[j]=b[j-1]^alpha_to[(g[j]+feedback)%n];

else

// если текущий коэффициент g – это нулевой коэффициент, выполняем один лишь

// сдвиг без умножения, перемещая символ из одного m-регистра в другой

b[j] = b[j-1];



// закольцовываем выходящий символ в крайний левый b0-регистр

b[0] = alpha_to[(g[0]+feedback)%n];

}

else



{ // деление завершено, осуществляем последний сдвиг регистра, на выходе регистра

// будет частное, которое теряется, а в самом регистре – искомый остаток

for (j = n-k-1; j>0; j--) b[j] = b[j-1] ; b[0] = 0;

}

}

}
lena-lena вне форума Ответить с цитированием
Старый 14.05.2010, 08:19   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Не заметил здесь ничего не си-специфичного.
Думаю, на вопрос "как" можно ответить - удалить комментарии и оставить все остальное.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 14.05.2010, 08:44   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Извините з анескромный вопрос: а это на чем код?

П.С. Реализуйте табличный метод... он прост как два байта.
p51x вне форума Ответить с цитированием
Старый 14.05.2010, 11:17   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Цитата:
Извините з анескромный вопрос: а это на чем код?

П.С. Реализуйте табличный метод... он прост как два байта.
Спасибо, поднял настроение :D :D :D :D :D
coNsept вне форума Ответить с цитированием
Старый 14.05.2010, 11:50   #5
lena-lena
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 15
По умолчанию

код я скопировала из книжки))) Там написано что его мож
нореализовать на Си. Ноя не знаю где его там писать. Может в консоле или ...... ну не знаю. Первый раз сталкиваюся из Си.
Извините за вопрос, а что такое табличный метод????
lena-lena вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировщик Рида-Соломона san4esf Помощь студентам 2 15.11.2009 18:25
Кодирование asil Помощь студентам 1 02.05.2009 20:48
Кодирование. Blizzz Общие вопросы Delphi 5 19.01.2009 18:28
Кодирование Mss_Smith Помощь студентам 3 17.04.2007 14:46
кодирование информации. Alar Общие вопросы Delphi 1 11.02.2007 19:26