下沙论坛

 找回密码
 注册论坛(EC通行证)

QQ登录

QQ登录

下沙大学生网QQ群8(千人群)
群号:6490324 ,验证:下沙大学生网。
用手机发布本地信息严禁群发,各种宣传贴请发表在下沙信息版块有问必答,欢迎提问 提升会员等级,助你宣传
新会员必读 大学生的论坛下沙新生必读下沙币获得方法及使用
查看: 3157|回复: 4
打印 上一主题 下一主题

〓〓救命啊,懂计算机的人帮帮我啊〓〓

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-15 20:36:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁能帮我CRC算法编程实现换个算法啊??帮忙啊$ b0 s) _7 I( b0 y( @/ T7 O
#include3 w! F% D6 V  a3 r" u" h' S: s" I
#include
9 v& F6 ^0 S% }: W4 l#include
; c7 z# s* F% H( R9 f  v#define CRC 5) {  g8 c: d& U) H& O
char data[5]={'1','1','0','0','1'};5 d" Q3 Q& y' \" y4 l
class Checkout% P6 N  Y" i$ Q: m: m
{
, D0 w0 l# ~# |/ [private:
6 a$ G1 a' K# |( w7 A- z char ax[50];
# n& m- m* p; }: z7 u6 v1 K char bx[4];6 [" W/ w1 R2 \. q' ?4 Y
int x;
1 j3 \4 l  q2 G8 Rpublic:
2 M# E- R$ b1 Z5 ~7 P8 U int length;8 z) s9 G$ i  X8 U' s
Checkout()
# S; d( ?) }4 L$ f4 N {  
) w8 H; ^0 Q5 R* K0 Y/ r  cin>>ax;8 e% H' {3 e. m2 u
  length=strlen(ax);
% S0 L* a- H% {$ b% B2 V$ N2 t: @ }
& P+ i! |" [4 m" b4 b void cxc();7 L5 U- w8 P/ \/ L3 b2 G0 A5 j
bool qyu();
0 U: T; a* `$ R$ ~ void add();
! B! b* U/ ^3 N' M+ X$ o" m! I& x};% i, g" F( d. _( V) R3 j& _
void Checkout::cxc()
1 d6 k) z3 L9 u9 M' H{0 S& b& ~6 a% K  M: Q- F9 R
for(int i=0;i<4;i++){' Q! o* j+ Z. j( z9 S) w; @! \
  ax[length+i]='0';
+ o3 F. M5 E( u) y }
8 W( K9 r: |( y; `}//将输入序列后加4个0$ D3 B; f( W: ^9 f3 m  w
bool Checkout::qyu()
6 }/ ?* x- {0 v/ X; ?" S, }{* D3 }3 M5 [; t! l
char c[5];
4 C1 ?, L: ?) S% ?- n8 [# q( f int i,j,n;
- t; o2 y  U8 n. Y8 N0 W int m=5;
2 b/ I* U( I* U7 Q( U& y1 h for(i=0;ax<i>=='0';i++);
. j4 L2 y: L- b+ a& U( A% l  if(i==length)
3 k# ?9 ~7 r+ a' m; |  {cout<<"余式是0"<<endl;
" E/ K  N+ _  V' ~' |   cout<<"发送成功"<<endl;! Z2 |. s! Q0 k- b/ i" T. G
   exit(0);, @1 d* F" Q& p& p0 h1 D+ |0 m
  }
; S$ B3 }7 F0 |) xelse{
6 }% c5 Y6 l7 W for(i=0;i<5;i++)$ S# ]5 L6 {9 P6 y
  c<i>=ax<i>;
3 x2 |7 Y' Y+ t, g1 g  D: X3 j while(m==CRC)8 _7 y# b# G. E- _  t9 Q3 s" L- `
{ for(j=0;j<CRC;j++)
! M" D9 ^  k2 F9 _% ^   { * c1 X  ~; x5 u3 Q# Y) [; @
                if(c[j]==data[j])
4 A2 C- `2 e- ~) t( p! f     c[j]='0';
) k( W9 E7 Y! x    else, K& C) Q  u( s" q# Y
     c[j]='1';0 L3 e# {3 ~8 u( P4 n. n& `
   }
" h% u1 y2 z* E; ?) i     for(j=0;c[j]=='0';j++);' E! r" h9 X/ J" s0 y4 e6 L
       n=j;
& p* m0 U5 f6 c7 \5 w, p3 v     for(m=0;m<CRC-n;m++)7 a! Z, s% z, R5 w7 X& a
     {
0 g2 O+ C% C) e8 A& k1 m% F    c[m]=c[j];
: Z0 A( f1 x" ?    j++;
; x  m. ?& Z7 ]! ^* m8 h   }' S% i4 Q$ y; w3 P- t
           while(i<length&&m<5)
) o- u& o6 O/ _5 D   {: D! F' F1 [) l6 A1 P( P* w- g# Y7 N2 c  ^
        c[m]=ax[i++]; & w( Q6 u6 c) X7 m
     m++;      
  ?' P" O7 m  r   }
  K/ _# ]- i1 z5 o* C/ `& H( \$ ?: _ }+ U) X9 g7 S: ~
}
  c7 u' ~7 k7 |9 }; o- D int k;
9 E: U- V$ _) l5 c" s- Y/ O for(k=0;k<m;k++)2 i$ Q6 a$ e  o# Q- {8 D6 Q
  bx[k]=c[k];
# A9 [) c+ w; ~( b for(j=0;bx[j]=='0';j++);+ K. Q9 S( O- w: e  L6 H: q
  if(j==m)5 T3 ]1 c! y( S5 l. ~& o
  {cout<<'0'<<endl;) F! p/ E$ p7 n
   x=0;  D: u! E' s" }! s9 |  m
  return true;
1 V1 x1 G5 b/ K" S  }6 d; N: n8 Y2 [2 O+ R1 Z4 q+ y: u
  else! Q0 Z& ~: G0 O
  {for(n=j;n<m;n++)$ B0 O" U, c" H) e* ?% G
     cout<<bx[n];; W- W" g( f6 i; y2 L# b
  x=m-j;0 s# N# B# n: k
  cout<<endl;: A+ u3 j( L' C. F3 t* d% X' w
  return false;
2 v: G  _* `. U0 d+ D) j  }
3 @3 M- m. k6 H}
0 C' v$ w7 K1 \9 J* |# kvoid Checkout::add()
2 }3 V/ f- p( d% G7 {* ]9 \{
) \& L/ w; B7 p  `; U8 y* Uint j=0;
. d5 [, g2 d0 k7 V' ~2 ]3 u  for(int i=length-x;i<length;i++)6 x9 v' ?# @: q) j# m
    ax<i>=bx[j++];
5 T5 E6 O! {/ V# D  cout<<"发送的序列加上余数后变成:";
; K7 w- k6 p2 x' X3 [1 E* U4 }5 t& K for(i=0;i<length;i++)% f2 z9 h7 H7 t: z6 Z
  cout<<ax<i>;
9 ]- |0 L# K3 [0 t: S cout<<endl;
3 W6 K$ @1 f% w5 q" `9 m3 l! U}2 y$ [4 P: F( M
void main()
) N9 e3 S) I8 x4 q{  
1 h7 x* Z9 C$ j( q. W' y/ e cout<<"本次实验模拟CRC校验,其生成多项式的比特序列是11001"<<endl; : j# W" m/ t) W
    cout<<"请输入发送数据比特序列:"<<endl;- f( e5 W; {5 i0 n
Checkout test;
5 W' ^7 p6 r: i" x& M- Q, o/ t- H$ v test.cxc();
. W$ z; ~, E% m  cout<<"余式比特序列是:";# O: K" p! ]' S
  test.qyu();
' ~( N' Y2 C/ {, @' h  test.add();' b3 b) _( V# J0 s# _" F/ y2 I
  cout<<"试试这次是否能被整除."<<endl;( L, R' ]6 l7 s2 _1 E$ W: v; u
cout<<"新余数是:";
" r# _* N0 X0 ?  t  if(test.qyu())
4 m( K0 O  [5 j' J$ A   cout<<"已发送成功!"<<endl;
9 ]2 Y/ ?! m% H4 G1 V  else
4 x0 I2 v% z& t" {( X5 y! U   cout<<"未发送,失败!"<<endl;1 y  {* p' y1 J" j1 D; L
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
  • TA的每日心情

    2019-4-26 13:26
  • 签到天数: 2 天

    [LV.1]初来乍到

    2
    发表于 2005-6-16 00:18:00 | 只看该作者
    C++ ?

    该用户从未签到

    3
    发表于 2005-6-16 13:19:00 | 只看该作者
    头晕
  • TA的每日心情

    2019-4-26 13:26
  • 签到天数: 2 天

    [LV.1]初来乍到

    4
    发表于 2005-6-16 22:49:00 | 只看该作者
    给点小费偶帮你搞定 HOHO
    * M4 w4 h% f4 q- T1 v
    [此贴子已经被作者于2005-6-16 22:49:36编辑过]

    " ~+ D' i, ?  U: ^1 w6 R& [( K

    该用户从未签到

    5
    发表于 2005-6-17 01:01:00 | 只看该作者
    晕,有点义气和意气好不,会的帮帮他

    本版积分规则

    关闭

    下沙大学生网推荐上一条 /1 下一条

    快速回复 返回顶部 返回列表