|
有谁能帮我把CRC算法实现换个编法啊??帮忙啊,急用
, ?2 E& E" d5 s1 w3 n#include
5 W) q b) K# ]#include
' g' ^0 B8 Q. t K#include
e7 [$ @4 q% V, w#define CRC 5; k8 v& I, P2 [ m7 g, y+ E
char data[5]={'1','1','0','0','1'};" i3 N0 a4 o( O" o8 I1 G7 p6 T
class Checkout7 A6 o! N% O" P* V" a, { I
{. ^' i* [# M" g& X
private:
$ m/ v! W$ w# K' E! H char ax[50];
1 E6 l0 x7 _& c char bx[4];5 Q# Z3 Q# o, T' h& u
int x;
' d" z' [9 z6 d3 a. T% hpublic:
6 @: I" k# f$ F. N/ b int length;
& x. m0 }" G- f' B! e Checkout()
+ A4 E2 ~$ G3 [$ k6 g! E8 F {
" T1 ^3 M7 r' s* X2 L cin>>ax;: ]6 U: ~1 A8 } D& i6 L
length=strlen(ax);
" h9 O3 K! J5 e3 K S: ?0 X }
) n. }" T% f' |6 q" ~9 r6 Q void cxc();
% [- `- I8 f1 O Q0 U8 T0 a* Q; J bool qyu();
2 a! D: u" }1 Z1 o void add();
/ b% _" r @* ^9 m7 o};' H0 h" }" p: W, k
void Checkout::cxc()
" H$ T, s, J$ y% B3 {3 x{
2 f/ \0 }* G, h8 Q& m! g) r for(int i=0;i<4;i++){
& ]5 R1 v5 b& T7 T3 h( B ax[length+i]='0';5 J: F- s; T% p, o2 Q8 ~ t
}
0 K6 W8 s! Q7 [) [4 I* w3 [}//将输入序列后加4个06 {; E8 n# a% k* f
bool Checkout::qyu() Q" o5 ?; T" }$ ]; H: P
{
, w( w, j; p* ~0 E! R char c[5];* ~& ]# g3 Q( D4 T+ p" K$ ?
int i,j,n;
# R0 Q9 z) M" z) G int m=5;8 M* _" k0 L9 \" Y8 C2 u0 Q' j
for(i=0;ax=='0';i++);
! M8 k& _' E- g6 {+ _ if(i==length)
1 A" X/ T$ E' y1 ?. U& @ {cout<<"余式是0"<7 N! l; h. k2 U+ g' u
cout<<"发送成功"</ [. [5 ]" z. ~! L7 \ exit(0);7 r3 m- p) O, n/ q9 p+ ]: J
}4 r# b0 R8 [# y+ F. \7 Y) x
else{
7 a! u, D+ ^+ ~, L% j5 ] for(i=0;i<5;i++)
4 l3 n5 r) _9 J8 M, w c=ax;* w( y7 V$ ?! L0 c9 G% ?7 d. p3 g
while(m==CRC); a7 ` D9 C( l# ?3 v$ \+ Y
{ for(j=0;j8 `0 @: h+ G0 N4 {. Y
{ + [- F* P8 Z# t
if(c[j]==data[j])* u) P+ i, t, @
c[j]='0';
' U6 h: A/ c( G& J) O) \% |* \ else
" T. h1 j x3 Q# Y3 J2 H c[j]='1';- {; p' D8 D$ j% C' L+ p: Q% m
}) X3 r- i% m$ n
for(j=0;c[j]=='0';j++);
1 J5 g; ~8 ~: m& c n=j;
; B3 F9 ^2 j" s, ~3 ?; { for(m=0;m ^3 ]- [; o! B& I2 @$ D
{
, L7 T- ` G' K- z5 p# O c[m]=c[j];$ Q9 g) h) r9 K9 s/ y6 G' o) `
j++;
+ j) d; `+ @ K' ? }
$ P* p/ Y2 N4 m1 V j while(i% u8 Y, @# d: I; v! q- f
{! t; ]! p9 f3 h
c[m]=ax[i++]; 4 X! f5 |) m" h3 _$ I, G" C3 F* r5 @
m++; : i( t: d- [% c& l G
}
?( F$ u/ q8 q, S- D% X }
! u) w( W4 z5 m7 q9 f}3 z5 X9 o. A4 D; c
int k;" M( g/ {$ Q- u/ M! H
for(k=0;k0 s: |& x; P( K9 F# M
bx[k]=c[k];) n; L Y, M, o9 q1 z
for(j=0;bx[j]=='0';j++);/ ^& d+ z' |, _' c9 s) _
if(j==m)
! ^! T$ F) i% T+ z' } {cout<<'0'<" }4 P1 g' R* U1 J, _! [+ a- S x=0;
+ R7 R9 w. G" Z: N1 ~8 f( Q return true;
9 w9 k7 t# ~; H' f: r7 z2 e }
7 b3 [, @! n W else
# V' \, ?1 i: D0 S6 n {for(n=j;n; t9 G. O6 ~5 U
cout<) x0 B4 ^ R4 E0 j( c' [
x=m-j;
' F. N+ \8 H+ \9 t$ d7 [! h cout<3 m' \+ a: @4 J6 t: V. H! S t
return false;* @9 V9 q4 r, i1 E
} r0 o* w" }5 K% ]0 u. x
}3 p- n3 ~9 q$ G1 \+ f: O X% q
void Checkout::add()
7 M' a1 [5 t: G9 w{# G4 D; i+ Y3 v1 ^! k f8 S
int j=0;
& s. G8 B4 R! u9 n# ^9 d5 H for(int i=length-x;i& K& b- o4 o# i% Y2 e' p7 }8 `1 t ax=bx[j++];
& t' S a6 `9 j) i cout<<"发送的序列加上余数后变成:";# d+ {0 m. I4 N' F
for(i=0;i; Y U6 r$ M( F8 h cout<;
1 j6 x, ]' @$ m, j3 ?8 g cout<7 j- g5 T% F) K, |6 I, J
}
- _4 o6 m$ c, Kvoid main()
$ {4 n% f- k: o: d{
# ?% C+ f/ ?/ U' d2 P cout<<"本次实验模拟CRC校验,其生成多项式的比特序列是11001"<' i/ E% ]" c9 M. K2 G, a cout<<"请输入发送数据比特序列:"<: G$ u- }% Z' G e6 m2 C, ]7 B Checkout test;
. t K( T6 T; }: \" ] test.cxc();
- ?$ w$ a5 H2 o- W7 l! C+ m cout<<"余式比特序列是:";
8 Q7 d( C* t) ?1 E3 R/ L# Y- B test.qyu();, c' u: x7 w3 r$ w
test.add();# S2 i; ]+ M9 g
cout<<"试试这次是否能被整除."<1 W5 V, ^; E9 S' ~/ W
cout<<"新余数是:";* b+ C4 U9 B- \- \' j
if(test.qyu())/ J) w5 m4 c1 J8 t5 I
cout<<"已发送成功!"<9 ]/ w+ p/ d% W/ b! ] else9 r. w4 @1 V6 d$ e: o
cout<<"未发送,失败!"<+ R2 B8 I; c# Z/ v+ m0 ~- g} |
|