![]() |
|
|
Ðåôåðàò: Êîäîâûå êîìáèíàöèè íà îñíîâå öèêëè÷åñêèõ êîäîâ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
![]() |
||
ÍÎÂÎÑÒÈ | ![]() |
![]() |
||
ÂÕÎÄ | ![]() |
|
Ðåôåðàòû áåñïëàòíî, ðåôåðàò áåñïëàòíî, êóðñîâûå ðàáîòû, ðåôåðàò, äîêëàäû, ðåôåðàòû, ðåôåðàòû ñêà÷àòü, ðåôåðàòû íà òåìó, ñî÷èíåíèÿ, êóðñîâûå, äèïëîìû, íàó÷íûå ðàáîòû è ìíîãîå äðóãîå. |
||
Ïðè èñïîëüçîâàíèè ìàòåðèàëîâ - ññûëêà íà ñàéò îáÿçàòåëüíà. |