![]() |
||||||||||||||||||||||||||
Ãëàâíàÿ Ðåôåðàòû ïî ðåêëàìå Ðåôåðàòû ïî ôèçèêå Ðåôåðàòû ïî ôèëîñîôèè Ðåôåðàòû ïî ôèíàíñàì Ðåôåðàòû ïî õèìèè Ðåôåðàòû ïî õîçÿéñòâåííîìó ïðàâó Ðåôåðàòû ïî öèôðîâûì óñòðîéñòâàì Ðåôåðàòû ïî ýêîëîãè÷åñêîìó ïðàâó Ðåôåðàòû ïî ýêîíîìèêî-ìàòåìàòè÷åñêîìó ìîäåëèðîâàíèþ Ðåôåðàòû ïî ýêîíîìè÷åñêîé ãåîãðàôèè Ðåôåðàòû ïî ýêîíîìè÷åñêîé òåîðèè Ðåôåðàòû ïî ýòèêå Ðåôåðàòû ïî þðèñïðóäåíöèè Ðåôåðàòû ïî ÿçûêîâåäåíèþ Ðåôåðàòû ïî þðèäè÷åñêèì íàóêàì Ðåôåðàòû ïî èñòîðèè Ðåôåðàòû ïî êîìïüþòåðíûì íàóêàì Ðåôåðàòû ïî ìåäèöèíñêèì íàóêàì Ðåôåðàòû ïî ôèíàíñîâûì íàóêàì Ðåôåðàòû ïî óïðàâëåí÷åñêèì íàóêàì Ïñèõîëîãèÿ è ïåäàãîãèêà Ïðîìûøëåííîñòü ïðîèçâîäñòâî Áèîëîãèÿ è õèìèÿ ßçûêîçíàíèå ôèëîëîãèÿ Èçäàòåëüñêîå äåëî è ïîëèãðàôèÿ Ðåôåðàòû ïî êðàåâåäåíèþ è ýòíîãðàôèè Ðåôåðàòû ïî ðåëèãèè è ìèôîëîãèè Ðåôåðàòû ïî ìåäèöèíå Ðåôåðàòû ïî ñåêñîëîãèè Ðåôåðàòû ïî èíôîðìàòèêå ïðîãðàììèðîâàíèþ Êðàòêîå ñîäåðæàíèå ïðîèçâåäåíèé |
Ðåôåðàò: Êîäîâûå êîìáèíàöèè íà îñíîâå öèêëè÷åñêèõ êîäîâÐåôåðàò: Êîäîâûå êîìáèíàöèè íà îñíîâå öèêëè÷åñêèõ êîäîâÀÍÍÎÒÀÖÈß Äîêóìåíò ñîäåðæèò îïèñàíèå ïðîãðàììû, êîòîðàÿ ñòðîèò êîäîâûå êîìáèíàöèè íà îñíîâå öèêëè÷åñêèõ êîäîâ. Ïðîãðàììà êîäèðóåò è äåêî-äèðóåò èíôîðìàöèîííûå ñëîâà. Èììèòèðóåòñÿ ðàáîòà èñòî÷íèêà, ïåðåäà-þùåãî èíôîðìàöèîííîå ñëîâî, êîäèðîâùèêà, êîäèðóþùåãî äàííîå ñëîâî, êàíàëà ñâÿçè è äåêîäèðîâùèêà, îáíàðóæèâàþùåãî è èñïðàâëÿþùåãî îøèáêè â èíôîðìàöèîííîì ïîëèíîìå. Ïðîãðàììà ðàáîòàåò ïî ïðèíöèïó ïðè¸ìíèê – èñòî÷íèê, òàê ,êàê ýòî ðåàëèçîâàíî â óñòðîéñòâàõ, ïåðåäàþùèõ èíôîðìàöèþ èëè îáûêíîâåííûõ ïðèâîäàõ äëÿ âíåøíèõ íîñèòåëåé â PC. ÑÎÄÅÐÆÀÍÈÅ 1. Ââåäåíèå ........................................................................................... 6 2. Ïîñòàíîâêà çàäà÷è .......................................................................... 7 3. Îïåðàöèè íàä öèêëè÷åñêèìè êîäàìè ............................................. 8 4. Ïðèíöèï ïîñòðîåíèÿ öèêëè÷åñêèõ êîäîâ ....................................... 9 4.1. Ïîëó÷åíèå êîäîâîé êîìáèíàöèè äîáàâëåíèåì îñòàòêà R(x) ...... 11 4.2. Ïîëó÷åíèå êîäîâîé êîìáèíàöèè óìíîæåíèåì íà îáðàçóþùèé ïîëèíîì .......................................................................................... 14 5. Ðàçðàáîòêà ñõåìû àëãîðèòìà ........................................................... 15 6. Ðàçðàáîòêà òåêñòà ïðîãðàììû ......................................................... 16 7. Ðåçóëüòàòû ðàáîòû ïðîãðàììû ....................................................... 21 ---------------------------------------------------------------------------------------------------- Ëèòåðàòóðà ........................................................................................ 23 Ïðèëîæåíèå ¹ 1 ............................................................................... 24 Ïðèëîæåíèå ¹ 2 ............................................................................... 30 § 1 Ââåäåíèå Êîä ,â êîòîðîì êîäîâàÿ êîìáèíàöèÿ, ïîëó÷åííàÿ ïóòåì öèêëè÷åñêîãî ñäâèãà ðàçðåøåííîé êîäîâîé êîìáèíàöèè ÿâëÿåòñÿ òàêæå ðàçðåøåííîé êîäîâîé êîìáèíàöèåé íàçûâàåòñÿ öèêëè÷åñêèì ( ïîëèíîìèàëüíûì, êîäîì ñ öèêëè÷åñêèìè èçáûòî÷íûìè ïðîâåðêàìè-ÖÈÏ). Ñäâèã îñóùåñòâëÿåòñÿ ñïðàâà íàëåâî, ïðè ýòîì êðàéíèé ëåâûé ñèìâîë ïåðåíîñèòñÿ â êîíåö êîìáèíàöèè. Öèêëè÷åñêèé êîä îòíîñèòñÿ ê ëèíåéíûì, áëî÷íûì, êîððåêòèðóþùèì, ðàâíîìåðíûì êîäàì.  öèêëè÷åñêèõ êîäàõ êîäîâûå êîìáèíàöèè ïðåäñòàâëÿþòñÿ â âèäå
ìíîãî÷ëåíîâ, ÷òî ïîçâîëÿåò Öèêëè÷åñêèå êîäû ÿâëÿþòñÿ ðàçíîâèäíîñòüþ ñèñòåìàòè÷åñêèõ êîäîâ è ïîýòîìó îáëàäàþò âñåìè èõ ñâîéñòâàìè. Ïåðâîíà÷àëüíî îíè áûëè ñîçäàíû äëÿ óïðîùåíèÿ ñõåì êîäèðîâàíèÿ è äåêîäèðîâàíèÿ. Èõ ýôôåê- òèâíîñòü ïðè îáíàðóæåíèè è èñïðàâëåíèè îøèáîê îáåñïå÷èëà èì øèðîåîå ïðèìåíåíèå íà ïðàêòèêå. Öèêëè÷åñêèå êîäû èñïîëüçóþòñÿ â ÝÂÌ ïðè ïîñëåäîâàòåëüíîé ïåðåäà÷å äàííûõ . § 2 Ïîñòàíîâêà çàäà÷è Ïîñòðîèòü öèêëè÷åñêèé êîä äëÿ ïåðåäà÷è 31 ðàçðÿäíîé êîäîâîé êîìáèíàöèè ñ èñïðàâëåíèåì îäíîêðàòíîé îøèáêè ( n=31 ,s=1) äâóìÿ ñïîñîáàìè. Ïîêàçàòü ïðîöåññ îáíàðóæåíèÿ è èñïðàâëåíèÿ îäíîêðàòíîé îøèáêè â ïåðåäàâàåìîé êîäîâîé êîìáèíàöèè. Ñîñòàâèòü ïðîãðàììó, ðåàëèçóþùóþ àëãîðèòì êîäèðîâàíèÿ, äåêîäèðîâàíèÿ è èñïðàâëåíèÿ îøèáêè ïðè ïåðåäà÷å äàííûõ ñ èñïîëüçîâàíèåì öèêëè÷åñêîãî êîäà. § 3 Îïåðàöèè íàä öèêëè÷åñêèìè êîäàìè 1. Ñäâèã ñïðàâà íàëåâî îñóùåñòâëÿåòñÿ ïóòåì óìíîæåíèÿ ïîëèíîìà íà x: G(x)=x4+x2+1 Û 0010101; G(x)×x=x5+x3+x Û 0101010. 2. Îïåðàöèè ñëîæåíèÿ è âû÷èòàíèÿ âûïîëíÿþòñÿ ïî ìîäóëþ 2 . Îíè ÿâëÿþòñÿ ýêâèâàëåíòíèìè è àññîöèàòèâíûìè : G1(x)+G2(x)=>G3(x); G1(x) -G2(x)=>G3(x); G2(x)+G1(x)=>G3(x); Ïðèìåð: G1(x)= x5 +x3+x; G2(x)=x4 +x3 +1; G3(x)=G1(x) Å G2(x) = x5 +x4+x+1. 3. Îïåðàöèÿ äåëåíèÿ ÿâëÿåòñÿ îáû÷íûì äåëåíèåì ìíîãî÷ëåíîâ, òîëüêî âìåñòî âû÷èòàíèÿ èñïîëüçóåòñÿ ñëîæåíîå ïî ìîäóëþ 2 : G1(x)=x6+x4+x3 ; G2(x)=x3+x2+1 .
x5 + x4 Å x5 + x4 +x2
òî æå â äâîè÷íîì êîäå:
1100
100 Âñå îïåðàöèè ëåãêî ðåàëèçóþòñÿ àïïàðàòíî íà ðåãèñòðàõ ñäâèãà ñ îáðàòíûìè ñâÿçÿì. § 4 Ïðèíöèï ïîñòðîåíèÿ öèêëè÷åñêèõ êîäîâ Èäåÿ ïîñòðîåíèÿ öèêëè÷åñêèõ êîäîâ áàçèðóåòñÿ íà èñïîëüçîâàíèè íåïðèâîäèìûõ ìíîãî÷ëåíîâ. Íåïðèâîäèìûì íàçûâàåòñÿ ìíîãî-÷ëåí,êîòîðûé íå ìîæåò áÿòü ïðåäñòàâëåí â âèäå ïðîèçâåäåíèÿ ìíîãî÷ëåíîâ íèçøèõ ñòåïåíåé ,ò.å. òàêîé ìíîãî÷ëåí äåëèòüñÿ òîëüêî íà ñàìîãî ñåáÿ èëè íà åäèíèöó è íå äåëèòüñÿ íè íà êàêîé äðóãîé ìíîãî÷ëåí. Íà òàêîé ìíîãî÷ëåí äåëèòüñÿ áåç îñòàòêà äâó÷ëåí xn+1.Íåïðèâîäèìûå ìíîãî÷ëåíû â òåîðèè öèêëè÷åñêèõ êîäîâ èãðàþò ðîëü îáðàçóþùèõ ïîëèíîìîâ. ×òîáû ïîíÿòü ïðèíöèï ïîñòðîåíèÿ öèêëè÷åñêîãî êîäà,óìíîæàåì êîìáèíàöèþ ïðîñòîãî k-çíà÷íîãî êîäà Q(x) íà îäíî÷ëåí xr ,à çàòåì äåëèíà îáðàçóþùèé ïîëèíîì P(x) , ñòåïåíü êîòîðîãî ðàâíà r.  ðåçóëüòàòå óìíîæåíèÿ Q(x) íà xr ñòåïåíü êàæäîãî îäíî÷ëåíà, âõîäÿùåãî â Q(x), ïîâû-øàåòñÿ íà r. Ïðè äåëåíèè ïðîèçâåäåíèÿ xrQ(x) íà îáðàçóþùèé ïîëèíîì ïîëó÷àåòñÿ ÷àñòíîå C(x) òàêîé æå ñòåïåíè, êàê è Q(x).Ðåçóëüòàò ìîæíî ïðåäñòàâèòü â âèä Q(x) xr R(x) ¾¾¾¾ = C(x) + ¾¾¾ , (1) P(x) P(x) ãäå R(x) - îñòàòîê îò äåëåíèÿ Q(x) xr íà P(x). ×àñòíîå C(x) èìååò òàêóþ æå ñòåïåíü, êàê è êîäîâàÿ êîìáèíàöèÿ Q(x) ïðîñòîãî êîäà, ïîýòîìó C(x) ÿâëÿåòñÿ êîäîâîé êîìáèíàöèåé ýòîãî æå ïîñòîãî k-çíà÷íîãî êîäà. Ñëåäóåò çàìåòèòü,÷òî ñòåïåíü îñòàòêà íå ìîæåò áûòü áîëüøå ñòåïåíè îáðàçóþùåãî ïîëèíîìà, ò.å. åãî íàèâûñøàÿ ñòåïåíü ìîæåò áûòü ðàâíà (r-1). Ñëåäîâàòåëüíî, íàèáîëüøåå ÷èñëî ðàçðÿäîâ îñòàòêà R(x) íå ïðåâûøàåò ÷èñëà r. Óìíîæàÿ îáå ÷àñòè ðàâåíñòâà (1) íà P(x) è ïðîèçâåäÿ íåêîòîðûå ïåðåñòàíîâêè ïîëó÷àåì : F(x) = C(x) P(x) = Q(x) xr + R(x) (2) Òàêèì îáðàçîì, êîäîâàÿ êîìáèíàöèÿ öèêëè÷åñêîãî n-çíà÷íîãî êîäà ìîæåò áûòü ïîëó÷åíà äâóìÿ ñïîñîáàìè: 1) óìíîæåíèå êîäîâîé êîìáèíàöèè Q(x) ïðîñòîãî êîäà íà îäíî÷ëåí xr è äîáàâëåíèå ê ýòîìó ïðîèçâåäåíèþ îñòàòêà R(x) , ïîëó÷åííîãî â ðåçóëüòàòå äåëåíèÿ ïðîèçâåäåíèÿ Q(x) xr íà îáðàçóþùèé ïîëèíîì P(x); 2) óìíîæåíèÿ êîäîâîé êîìáèíàöèè C(x) ïðîñòîãî k-çíà÷íîãî íà îáðàçóþùèé ïîëèíîì P(x). Ïðè ïîñòðîåíèè öèêëè÷åñêèõ êîäîâ ïåðâûì ñïîñîáîì ðàñðîëîæåíèå èíôîðìàöèîííûõ ñèìâîëîâ âî âñåõ êîìáèíàöèÿõ ñòðîãî óïîðÿäî÷åíî - îíè çàíèìàþò k ñòàðøèõ ðàçðÿäîâ êîìáèíàöèè, à îñòàëüíûå (n-k) ðàçðÿäîâ îòâîäÿòñÿ ïîä êîíòðîëüíûå. Ïðè âòîðîì ñïîñîáå îáðàçîâàíèÿ öèêëè÷åñêèõ êîäîâ èíôîðìà- öèîííûå è êîíòðîëüíûå ñèìâîëû â êîìáèíàöèÿõ öèêëè÷åñêîãî êîäà íå îòäåëåíû äðóã îò äðóãà, ÷òî çàòðóäíÿåò ïðîöåññ äåêîäèðîâàíèÿ.
§ 4.1 Ïîëó÷åíèå êîäîâîé êîìáèíàöèè äîáàâëåíèåì îñòàòêà R(x) Ïîñòðîèòü öèêëè÷åñêèé êîä äëÿ ïåðåäà÷è 31 ðàçðÿäíîé êîäîâîé êîìáèíàöèè ñ èñïðàâëåíèåì îäíîêðàòíîé îøèáêè ( n=31, s=1) Ðåøåíèå. 1. Îïðåäåëèì ÷èñëî êîíòðîëüíûõ ðàçðÿäîâ - m : m = log2 (n+1) = log2 (31+1) = 5. 2. Îïðåäåëèì êîëè÷åñòâî èíôîðìàöèîííûõ ðàçðÿäîâ k : k = n-m = 26, ò.å ïîëó÷èëè (31, 26 ) - êîä . 3. Ñòðîèì èíôîðìàöèîííûé ïîëèíîì,ñîòâåòñòâóþùèé èíôîðìàöèîííîìó ñëîâó äëèíîé k-áèò: G(x)=00000000000000000000000101= x2 +1. 4. Îñóùåñòâëÿì ñäâèã êîäà âëåâî íà m=n-k=5 ðàçðÿäîâ ò.å ïîëèíîì G(x) óìíîæàåòñÿ íà xm : xm G(x)= (x2+1) x5= x7+ x5 =0000000000000000000000010100000. 5. Âûáèðàåòñÿ îáðàçóþùèé ìíîãî÷ëåí-P(x) ïî òàáëèöå íåïðèâîäèìûõ ìíîãî÷ëåíîâ. Äëÿ èñïðàâëåíèÿ îäèíî÷íîé îøèáêè (d0=3) îáðàçóþùèé ïîëèíîì P(x) äîëæåí áûòü ñòåïåíè m=n-k=5 è êîëè÷åñòâîì íåíóëåâûõ ÷ëåíîâ íå ìåíüøå ìèíèìàëüíîãî êîäîâîãî ðàññòîÿíèÿ d0 =3. Èñõîäÿ èç ýòîãî îáðàçóþøèé ïîëèíîì P(x) ðàâåí : P(x)= x5 + x4 +x3 +x 2 +1 = 111101. 6. Îïðåäåëèì îñòàòîê R(x) îò äåëåíèÿ G(x)×x m íà îáðàçóþùèé ïî- ëèíîì P(x)
x5 + x3 +x2 +x 101110
x4 +x +1 10011 Îñòàòîê R(x)= x4+x+1 =10011. 7. Ñòðîèì ïåðåäàâàåìûé êîäîâûé ïðîëèíîì F(x) : F(x)=xm G(x)ÅR(x)= x7+ x5+ x4+x+1 =0000000000000000000000010110011. 8. Ïóñòü â ïðèíÿòîì ñîîáùåíèè ïðîèçîøëà îøèáêà â òðèäöàòü ïåðâîì ðàçðÿäå,ïðè çòîì ïðèíÿòîå êîäîâîå ñîîáùåíèå èìååò âèä : F¢(x)=F(x) Å E(x)= 1000000000000000000000010110011. 9. Ðàçäåëèì ìíîãî÷ëåí F1(x) ñîîòâåñòâóþùèé ïîëó÷åííîé êîäîâîé êîì-áèíàöèè íà îáðàçóþùèé ïîëèíîì, ïðè ýòîì âåñ îñòàòêà (êîëè÷åñòâî åäèíèö â êîäå îñòàòêà) äîëæåí áûòü ìåíüøå èëè ðàâåí êîëè÷åñòâó îøèáîê W £S
111010
111000
101000 111101
101110
100110
110110
101100 111101
111110 111101
111111 111101
11110 Ñðàâíèâàåì âåñ ïîëó÷åííîãî îñòàòêà w ñ ÷èñëîì èñïðàâëÿåìûõ îøèáîê w>s . 10. Ïðîèçâîäèì öèêëè÷åñêèé ñäâèã ïðèíÿòîé êîäîâîé êîìáèíàöèè íà îäèí ðàçðÿä âëåâî è ïîâòîðÿåì ï.9 ïîêà w £ s.
100011
111101 111101
Ñêëàäûâàåì ïî ìîäóëþ 2 ïîñëåäíåå äåëèìîå ñ ïîñëåäíèì îñòàòêîì: 0000000000000000000000101100111
0000000000000000000000101100110 Îñóùåñòâëÿåì îáðàòíûé ñäâèã íà 1 ðàçðÿä ïîëó÷åííîé êîìáèíàöèè 0000000000000000000000010110011 Îòáðîñèâ êîíòðîëüíûå ðàçðÿäû , ïîëó÷àåì ïåðåäàííîå èíôîðìàöèííîå ñëîâî. § 4.2 Ïîñòðîåíèå êîäîâîé êîìáèíàöèè ïóòåì óìíîæåíèÿ íà îáðàçóþùèé ïîëèíîì Ïîñòðîèòü öèêëè÷åñêèé êîä äëÿ ïåðåäà÷è 31 ðàçðÿäíîé êîäîâîé êîìáèíàöèè ñ èñïðàâëåíèåì îäíîêðàòíîé îøèáêè ( n=31, s=1) ïóòåì óìíîæåíèÿ îáðàçóþùåãî ìíîãî÷ëåíà íà ìíîãî÷ëåí ïîëíîãî 31 ðàçðÿäíîãî êîäà. Ðåøåíèå. 1. Ñòðîèì èíôîðìàöèîííûé ïîëèíîì,ñîòâåòñòâóþùèé èíôîðìàöèîííîìó ñëîâó äëèíîé k-áèò: G(x)=00000000000000000000000101= x2 +2. 2. Ñòðîèì ïåðåäàâàåìûé êîäîâûé ïîëèíîì 00000000000000000000000101 111101
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. |
|||||||||||||||||||||||||
|