这个是函数表示:
做成函数的形式hanmingma_wucha=function(hanmingma)hanmingma_wucha=hanmingmafor i=1:4row=ceil(rand*7) hanmingma_wucha(row,i)=~(hanmingma_wucha(row,i))end保存成一个m文件即可
程序改为如下:
S=ones(7,3)%要加的部分A=[1 1 0 1 1 0 0]
[r,l]=size(A)
E=[0 0 0 0 0 0 00 0 0 0 0 0 10 0 0 0 0 1 00 0 0 0 1 0 00 0 0 1 0 0 00 0 1 0 0 0 00 1 0 0 0 0 01 0 0 0 0 0 0]%%%%%求校正子,然后将其转化成十进制数
for i=1:r
Sx=S(i,1)*4+S(i,2)*2+S(i,3)
end%%%%下面是(7,4)码检错
for i=1:r
switch(Sx)
case 0
disp('此接收码字没错')
case 1
case 2
disp('注意:此接收码字的第二位有错,请纠正')
case 4
disp('注意:此接收码字的第三位有错,请纠正')
case 3
disp('注意:此接收码字的第四位有错,请纠正')
case 5
disp('注意:此接收码字的第五位有错,请纠正')
case 6
disp('注意:此接收码字的第六位有错,请纠正')
case 7
disp('注意:此接收码字的第七位有错,请纠正')
end
end
%%%下面为在知道哪位出错的情况下,进行纠正
for i=1:r
switch(Sx)
case 0
B(i,:)=A(i,:)+E(1,:)
case 1
B(i,:)=A(i,:)+E(2,:)
case 2
B(i,:)=A(i,:)+E(3,:)
case 4
B(i,:)=A(i,:)+E(4,:)
case 3
B(i,:)=A(i,:)+E(5,:)
case 5
B(i,:)=A(i,:)+E(6,:)
case 6
B(i,:)=A(i,:)+E(7,:)
case 7
B(i,:)=A(i,:)+E(8,:)
end
end
B=rem(B,2)
disp('纠错后的码字')
disp(B)
结果:
注意:此接收码字的第七位有错,请纠正
纠错后的码字
0 1 0 1 1 0 0
20分钟内的作品……不过想剪枝想了好久结果发现不用……
vara:array[1..64] of integer
n,b,d:integer
i,j:integer
function haiming(a,b:integer):integer
var x:integer
begin
x:=a xor b
haiming:=(x and 1)+(x shr 1 and 1)+(x shr 2 and 1)+(x shr 3 and 1)+(x shr 4 and 1)+(x shr 5 and 1)+(x shr 6 and 1)+(x shr 7 and 1)
end
function t(i,j:integer):boolean
var k:integer
begin
for k:=1 to i-1 do if haiming(a[k],j)<d then exit(true)
exit(false)
end
procedure print
var i:integer
begin
for i:=1 to n do
if i mod 10=0 then writeln(a[i])else write(a[i],' ')
if n mod 10>0 then writeln
end
begin
read(n,b,d)a[1]:=0
for i:=2 to n do
begin
j:=a[i-1]+1while (j<1 shl b) and t(i,j) do inc(j)
if j=1 shl b then begin writeln('Exception:no valid answer')haltend
a[i]:=j
end
end.
要注释版本再说……价值15,注释5
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)