ñêà÷àòü ðåôåðàòû
  RSS    

Ìåíþ

Áûñòðûé ïîèñê

ñêà÷àòü ðåôåðàòû

ñêà÷àòü ðåôåðàòûÐåôåðàò: Êîäîâûå êîìáèíàöèè íà îñíîâå öèêëè÷åñêèõ êîäîâ

G(x)=00000000000000000000000101= x2 +2.

2. Ñòðîèì ïåðåäàâàåìûé êîäîâûé ïîëèíîì

                00000000000000000000000101

                                                     111101        

                00000000000000000000000101

             00000000000000000000000101

           00000000000000000000000101

          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<n-n1+1)then Textcolor(9);

                                     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<n1)then TextColor(2);

                                     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<n1) then TextColor(11);

                                     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<n-n1+1)then Textcolor(9);

                                     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<n-n1+1)then Textcolor(9);

                                     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           

Íàæìèòå ëþáóþ êëàâèøó...

Âûâîäû:

      Äàííàÿ ïðîãðàììà êîäèðóåò ñîîáùåíèÿ  èñïîëüçóÿ öèêëè÷åñêèé êîä.

Ïðè ýòîì îíà èììèòèðóåò ðàáîòó êàíàëà äëÿ ïåðåäà÷è èíôîðìàöèè.

    Ïðè âîçíèêíîâåíèè èñêëþ÷èòåëüíûõ ñèòóàöèé,êîãäà èíôîðìàöèîííîå ñëîâî ïî êàêèì-ëèáî ïðè÷èíàì ðàñêîäèðîâàòü íå óäà¸òñÿ, ïðîãðàììà ïîâòîðÿåò çàïðîñ íà ïåðåñûëêó äàííûõ, êàê ýòî äåëàåòñÿ â ðåàëüíûõ ñèòóàöèÿõ ïîäîáíîãî ðîäà.

     Êðîìå ýòîãî, ïðîãðàììà  ñëó÷àéíûì îáðàçîì, "ïðè ïðîõîæäåíèè

èíôîðìàöèîííîãî ñëîâà ÷åðåç êàíàë" äîïóñêàåò â ñëîâå îäíîêðàòíóþ îøáêó, çàòåì  èñïðàâëÿåò åå, äåêîäèðóåò èíôîðìàöèîííîå ñëîâî è ïåðåäà¸ò ðåçóëüòàò ïîëüçîâàòåëþ.


Ëèòåðàòóðà

1. “Êîäèðîâàíèå èíôîðìàöèè (äâîè÷íûå êîäû)”.Áåðåçþê Í.Ò.,

Àíäðóùåíêî À.Ã., Ìîùèöêèé Ñ.Ñ. è äð. Õàðüêîâ,èçäàòåëüñêîå îáúåäè-

íåíèå “Âèùà øêîëà”,1978. 252 ñ.

2. “ Ïðîãðàììèðîâàíèå â ñðåäå Turbo Pascal “ . Ìàð÷åíêî À.È., Ìàð÷åíêî

 Ë.À. Ìîñêâà,“Áèíîì Óíèâåðñàë”.Êèåâ,”Þíèîð”,1997.495 ñ.

     


Ïðèëîæåíèå ¹ 1

Ïðîöåäóðû è ôóíêöèè ìîäóëÿ _ññ31.

Unit _CC31;

Interface

Uses

     Crt;

Const

      n=30;                                   { Èíôîðìàöèÿ+êîä              }

      n1=5;                                   { Ðàçìåð êîíòðîëüíûõ ðàçðÿäîâ }

 Type

     Move_code=array[0..n] of byte; { Ïåðåäàâàåìûé ïîëèíîì F(x)   }

     Rest=array[0..n1] of byte;     { Îñòàòîê                     }

     Polinom=array[0..n1] of byte;  { Îáðàçóþùèé ïîëèíîì P(x)     }

Procedure Init(var m1:Move_code;var p1:Polinom;

                   var r1:Rest;var flag:integer);

Procedure FxPx(var m6:Move_Code);

Procedure Divizion(var m2:Move_code;var r2:Rest;

                           p2:Polinom;var flag:integer);

Procedure BildMoveCode(var m3:Move_code;r3:Rest;var flag:integer);

Procedure Decoder(var m6:Move_Code);

Procedure MakeError(var m4:Move_code;var err:integer);

Procedure BildMoveCodeMultiplication(var m7:Move_Code);

Procedure Correction(var m5:Move_code;p5:Polinom;var r5:Rest);

Implementation

Procedure Init;

var

  i:integer;

begin

   p1[5]:=1;

   p1[4]:=1;

   p1[3]:=1;

   p1[2]:=1;

   p1[1]:=0;

   p1[0]:=1;

   flag:=0;

   for i:=n1 downto 0 do

     r1[i]:=0;

   Randomize;

   for i:=n-n1 downto 0 do

     m1[i]:=random(2);

  end;

Procedure FxPx(var m6:Move_Code);

var

  i:integer;

  k:byte;

begin

  k:=5;

  while(k>0) do

  begin

    for i:=n downto 1 do

    m6[i]:=m6[i-1];

    dec(k);

  end;

  for i:=n1-1 downto 0 do

            m6[i]:=0;

end;

Procedure Divizion(var m2:Move_code;var r2:Rest;

                           p2:Polinom;var flag:integer);

label

    RETURN;

var

  i,j,i1,kol,Countzero:integer;

begin

   j:=n;

RETURN:while((j>=0)and(m2[j]=0))do dec(j);

   if(j>n1)

    then begin

               for i:=n1 downto 0 do

                 begin

                   r2[i]:=m2[j];

                   dec(j);

                 end;

                while(j>=0)do

                   begin

                         for i:=n1 downto 0 do

                           r2[i]:=r2[i] xor p2[i];

                         i1:=n1;

                         while((i1>=0)and(r2[i1]=0))do dec(i1);

                         if(i1=-1)then goto RETURN;

                         Kol:=n1-i1;

                         while(Kol>0)do

                            begin

                              for i:=n1 downto 1 do

                                   r2[i]:=r2[i-1];

                              dec(Kol);

                            end;

                         Kol:=n1-i1;

                         while((Kol>0)and(j>=0))do

                            begin

                              r2[Kol-1]:=m2[j];

                              dec(Kol);

                              dec(j);

                            end;

                         if((j=-1)and(Kol=0))

                          then begin

                                    for i:=n1 downto 0 do

                                      r2[i]:=r2[i] xor p2[i];

                                   end

                          else flag:=Kol;

                   end;

              end

    else if(n1=j)

              then begin

                         for i:=n1 downto 0 do

                           begin

                             r2[i]:=m2[j];

                             dec(j);

                           end;

                         for i:=n1 downto 0 do

                           r2[i]:=r2[i] xor p2[i]

                   end

    else if(j<n1)

             then begin

                        for i:=j downto 0 do

                          r2[i]:=m2[i]

                  end;

end;

Procedure  BildMoveCode(var m3:Move_code;r3:Rest;var flag:integer);

var

   i,k:integer;

begin

   if(flag>0)then

     begin

       k:=n1-flag;

       for i:=n1 downto flag do

             begin

               m3[k]:=r3[i];

               dec(k);

             end;

     end

   else begin

              for i:=n1-1 downto 0 do

                m3[i]:=r3[i];

            end;

end;

Procedure MakeError(var m4:Move_code;var err:integer);

begin

    Randomize;

    err:=Random(n);

    m4[err]:=m4[err] xor 1;

end;

Procedure Decoder(var m6:Move_Code);

var

  i:integer;

  k:byte;

begin

  k:=5;

  while(k>0) do

  begin

    for i:=0 to n-1 do

    m6[i]:=m6[i+1];

    dec(k);

  end;

  for i:=n downto n-n1+1 do

            m6[i]:=0;

end;

Procedure BildMoveCodeMultiplication(var m7:Move_Code);

var

   m1,m2,m3,m4,mm:Move_Code;

   i,j:integer;

begin

  mm:=m7;

  m1:=m7;

  for j:=0 to 1 do

    begin

      for i:=n downto 1 do

            m1[i]:=m1[i-1];

      m1[j]:=0;

    end;

  m2:=m7;

  for j:=0 to 2 do

    begin

      for i:=n downto 1 do

            m2[i]:=m2[i-1];

      m2[j]:=0;

    end;

  m3:=m7;

  for j:=0 to 3 do

    begin

      for i:=n downto 1 do

            m3[i]:=m3[i-1];

      m3[j]:=0;

    end;

  m4:=m7;

  for j:=0 to 4 do

    begin

      for i:=n downto 1 do

            m4[i]:=m4[i-1];

      m4[j]:=0;

    end;

  for i:=n downto 0 do

    m7[i]:=mm[i] xor m1[i]xor m2[i]xor m3[i] xor m4[i];

end;

Procedure Correction(var m5:Move_code;p5:Polinom;var r5:Rest);

var

   i,Correctflag,i1:integer;

   Count,Countcarry,Carryflag:byte;

begin

   Correctflag:=0;

   Countcarry:=0;

   repeat

     for i:=n1 downto 0 do

       r5[i]:=0;

     Count:=0;

     Divizion(m5,r5,p5,Correctflag);

     i1:=n1;

     while((i1>=Correctflag)and(r5[i1]=0))do dec(i1);

     if({(i1=Correctflag-1) or

       (}(i1=Correctflag)and(r5[Correctflag]=1)){)}

       then m5[0]:=m5[0] xor r5[Correctflag]

       else  begin

                   Carryflag:=m5[n];

                   for i:=n downto 1 do

                   m5[i]:=m5[i-1];

                   m5[0]:=Carryflag;

                   inc(Countcarry);

                 end;

   until ({(i1=Correctflag-1) or

             (}(i1=Correctflag)and(r5[Correctflag]=1));{);}

   while (Countcarry>0) do

    begin

       Carryflag:=m5[0];

             for i:=0 to n-1 do

                m5[i]:=m5[i+1];

             m5[n]:=Carryflag;

            dec(Countcarry);

    end;

end;

end.

Ïðèëîæåíèå ¹ 2

Ïðîöåäóðû è ôóíêöèè ìîäóëÿ _Serv.

Unit _SERV;

Interface

Uses

   Crt,Dos;

Const

   EmptyBorder  =0;

   SingleBorder =1;

   DoubleBorder =2;

   BorderChar:array[0..2,1..6] of Char=

                  ((#32,#32,#32,#32,#32,#32),

                   (#218,#196,#191,#179,#192,#217),

                   (#201,#205,#187,#186,#200,#188));

   MaxChar    =80;

   MaxLine     =25;

   MenuTop   =3;

   SubMenuTop   =2;

   MenuLine     :array[1..MenuTop]of string[20]=

                        ('  Î ïðîãðàììå...',' Äåìîíñòðàöèÿ '  ‘Âûõîä ');

   SubMenuLine  :array[1..SubMenuTop]of string[20]=

                        ('  Ñëîæåíèåì' , ' Óìíîæåíèåì');

Procedure   SetWindow(x1,y1,x2,y2,Bord:byte;Header:string);

Procedure   CursorOff;

Function    GetMainMenuChoice:byte;

Function    GetSubMenuChoice:byte;

Procedure   About;

Implementation

Procedure SetWindow(x1,y1,x2,y2,Bord:byte;Header:string);

var

  i:integer;

begin

  if not ((x1<1) or (x2<=x1) or

              (y1<1) or (y2<=y1) or (x2>MaxChar) or

              (y2>MaxLine) or (Bord>2)) then

    begin

      GotoXY(x1,y1);

      Write(BorderChar[Bord,1]);

      for i:=1 to x2-x1-1 do

            begin

              GotoXY(x1+i,y1);

              Write(BorderChar[Bord,2]);

            end;

      GotoXY(x2,y1);

      Write(BorderChar[Bord,3]);

      for i:=1 to y2-y1-1 do

            begin

              GotoXY(x1,y1+i);

              Write(BorderChar[Bord,4]);

              GotoXY(x2,y1+i);

              Write(BorderChar[Bord,4]);

            end;

      GotoXY(x1,y2);

      Write(BorderChar[Bord,5]);

      for i:=1 to x2-x1-1 do

            begin

              GotoXY(x1+i,y2);

              Write(BorderChar[Bord,2]);

            end;

      GotoXY(x2,y2);

      Write(BorderChar[Bord,6]);

    end;

    GotoXY((x2-x1-ord(Header[0])) div 2+x1,y1);

    Write(Header)

end;

Procedure CursorOff;

begin

  asm

    mov ah,1

    mov ch,20h

    int 10h

  end;

end;

Function GetMainMenuChoice:byte;

var

   Count:byte;

   i:integer;

   ch,ch1:char;

begin

  Count:=1;

  while KeyPressed do

    ch:=Readkey;

 repeat

   for i:=1 to MenuTop do

    begin

      if(i=Count)then

            begin

              HighVideo;

              TextColor(0);

            end

      else

             begin

               LowVideo;

               TextColor(8);

             end;

      GotoXY(25,10+i);

      Writeln(MenuLine[i]);

      CursorOff;

    end;

   if KeyPressed

     then begin

            ch:=Readkey;

   if(ch=#0)

     then begin

              ch1:=Readkey;

   case ch1 of

     #72 : if(Count>1)

                then dec(Count);

     #80 : if(Count<MenuTop)

                then inc(Count);

    end;

  end;

 end;

 until(ch=#13);

 GetMainMenuChoice:=Count;

end;

Function GetSubMenuChoice:byte;

var

   Count:byte;

   i:integer;

   ch,ch1:char;

begin

  Count:=1;

  while KeyPressed do

    ch:=Readkey;

 repeat

   for i:=1 to SubMenuTop do

    begin

      if(i=Count)then

            begin

              HighVideo;

              TextColor(9);

            end

      else

             begin

               LowVideo;

               TextColor(1);

             end;

      GotoXY(26,10+i);

      Writeln(SubMenuLine[i]);

      CursorOff;

    end;

   if KeyPressed

     then begin

            ch:=Readkey;

   if(ch=#0)

     then begin

              ch1:=Readkey;

   case ch1 of

     #72 : if(Count>1)

                then dec(Count);

     #80 : if(Count<SubMenuTop)

                then inc(Count);

    end;

  end;

 end;

 until(ch=#13);

 GetSubMenuChoice:=Count;

end;

Procedure About;

begin

  TextColor(15);

  SetWindow(5,1,75,3,1,'Î ïðîãðàììå');

  TextColor(10);

  GotoXY(6,2);

  TextColor(10+128);

  Write('Òîêàðü Àëåêñåé Þðüåâè÷ ÀÏ-57.Êóðñîâîé ïðîåêò.

            “Öèêëè÷åñêèé êîä”   ');

end;

end.


Ñòðàíèöû: 1, 2


Íîâîñòè

Áûñòðûé ïîèñê

Ãðóïïà âÊîíòàêòå: íîâîñòè

Ïîêà íåò

Íîâîñòè â Twitter è Facebook

  ñêà÷àòü ðåôåðàòû              ñêà÷àòü ðåôåðàòû

Íîâîñòè

ñêà÷àòü ðåôåðàòû

Îáðàòíàÿ ñâÿçü

Ïîèñê
Îáðàòíàÿ ñâÿçü
Ðåêëàìà è ðàçìåùåíèå ñòàòåé íà ñàéòå
© 2010.