Кодовые комбинации на основе циклических кодов
00000000000000000000000101
00000000000000000000000101
0000000000000000000000011001001
3. Процесс исправления однократной ошибки аналогичен описанному
в § 4.1.
§ 5. Разработка схемы алгоритма
Ciclic code
нет
да
нет
да
Конец
§ 6. Разработка текста программы
Для представления информационного слова в памяти используется
массив. В состав программы входит основная программа и два модуля,
реализующие алгоритм кодирования и декодирования информационных слов и диалога с пользователем соответственно.
Program Cyclic_Code;
Uses
Crt,_CC31,_Serv;
Var
m,mm:Move_code;
p:Polinom;
r:Rest;
i,Mainflag,From,Error:integer;
Switch:byte;
Key:boolean;
begin
Repeat
Key:=true;
TextColor(11);
TextBackGround(7);
Clrscr;
SetWindow(24,10,45,14,2,' Главное меню ');
Switch:=GetMainMenuChoice;
case Switch of
1:begin
About;
Readln;
Key:=False;
end;
2: begin
TextColor(0);
ClrScr;
SetWindow(25,10,40,13,1,' Образовать ');
Switch:=GetSubMenuChoice;
case Switch of
1:begin
TextBackGround(0);
TextColor(15);
ClrScr;
SetWindow(1,1,79,24,2,' Демонстрация');
TextColor(14);
GotoXY(2,2);
Init(m,p,r,MainFlag);
Write(‘Информационный полином ');
TextColor(2);
for i:=n downto 0 do
begin
if(i
Write(m[i]);
end;
TextColor(14);
GotoXY(2,3);
Write('Образующий
полином ');
TextColor(13);
for i:=n1 downto 0 do
Write(p[i]);
TextColor(14);
GotoXY(2,4);
Write('Сложение
по модулю 2
(F(x)+P(x)): ');
FxPx(m);
TextColor(9);
for i:=n downto 0 do
begin
if(i
Write(m[i]);
end;
TextColor(14);
GotoXY(2,5);
Write('Остаток:
');
Divizion(m,r,p,Mainflag);
TextColor(11);
for i:=n1 downto Mainflag do
Write(r[i]);
GotoXY(2,6);
TextColor(14);
Write('Передаваемый
полином:
');
BildMoveCode(m,r,Mainflag);
TextColor(9);
for i:=n downto 0 do
begin
if(i
Write(m[i]);
end;
GotoXY(2,7);
TextColor(14);
Write('Произошла
ошибка...
');
MakeError(m,Error);
TextColor(9);
for i:=n downto 0 do
begin
if(i=Error)then
TextColor(12)
else
TextColor(9);
write(m[i]);
end;
GotoXY(2,8);
TextColor(14);
Write('Ошибка
исправлена!
');
TextColor(9);
Correction(m,p,r);
for i:=n downto 0 do
begin
if(i=Error)then
TextColor(10)
else
TextColor(9);
write(m[i]);
end;
TextColor(14);
GotoXY(2,9);
Write('Исходный
полином:
');
Decoder(m);
TextColor(2);
for i:=n downto 0 do
begin
if(i
Write(m[i]);
end;
Key:=false;
end;
2:begin
TextBackGround(0);
TextColor(15);
ClrScr;
SetWindow(1,1,79,24,2,'Демонстрация');
TextColor(14);
GotoXY(2,2);
Init(m,p,r,MainFlag);
Write('Информационный
полином: ');
TextColor(2);
for i:=n downto 0 do
begin
if(i
Write(m[i]);
end;
TextColor(14);
GotoXY(2,3);
Write('Образующий
полином: ');
TextColor(13);
for i:=n1 downto 0 do
Write(p[i]);
TextColor(14);
GotoXY(2,4);
Write('Результат
умножения:
');
BildMoveCodeMultiplication(m);
TextColor(9);
for i:=n downto 0 do
Write(m[i]);
GotoXY(2,5);
TextColor(14);
Write('Произошла
ошибка ...
');
MakeError(m,Error);
TextColor(9);
for i:=n downto 0 do
begin
if(i=Error)then
TextColor(12)
else
TextColor(9);
write(m[i]);
end;
GotoXY(2,6);
TextColor(14);
Write('Ошибка
исправлена !
');
TextColor(9);
Correction(m,p,r);
for i:=n downto 0 do
begin
if(i=Error)then
TextColor(10)
else
TextColor(9);
write(m[i]);
end;
Key:=false;
end;
end;
TextColor(14);
GotoXY(2,22);
Write('Нажмите
любую
клавишу...');
Readln;
end;
3:begin
ClrScr;
GotoXY(1,24);
TextColor(14);
Writeln('Работа программы
завершена ...');
Readln;
TextBackGround(0);
TextColor(15);
ClrScr;
Key:=true;
end;
end;
Until Key;
end.
§
7 .Результаты
работы программы
Результат
работы программы
при образовании
кода добавлением
остатка
Демонстрация
Информационный
полином:
0000011010111110011110110110110
Образующий
полином:
111101
Cложениe по модулю
2 (F(x)+P(x)): 1101011111001111011011011000000
Остаток:
010101
Передаваемый
полином:
1101011111001111011011011010101
Произошла
ошибка...
1101011111001110011011011010101
Ошибка исправлена!
1101011111001111011011011010101
Исходный полином:
0000011010111110011110110110110
Нажмите любую
клавишу...
Результат
работы при
образовании
кода умножением
Демонстрация
Информационный
полином:
0000001010110000011111010001011
Образующий
полином:
111101
Результат
умножения:
0110000011111010000100100101111
Произошла
ошибка...
0110000011111010000100100101101
Ошибка исправлена!
0110000011111010000100100101111