Вопрос таков: Нужно создать матрицу 3х3 разработать схему контрольных сумм для востановления данных в матрице.
Зарание спасибо
zDevil, Это не вопрос, это задание.
Вопрос то в чем? Какие требования к матрице, к контрольным суммам, к степени "восстанавливаемости"?
Какие собственные мысли по реализации?
Хорошо скажу по другому. Нужна помощь с этой задачей
zDevil, ок, поменяем ответ. Ты можешь мне помочь построить дачу?
Нужна помощь по курсавой
Есть задача: Нужно создать матрицу 3х3 разработать схему контрольных сумм для востановления данных в матрице.
Есть код:
program DataCheck;
{$APPTYPE CONSOLE}
uses
SysUtils;
var data: array of array of integer;
var sum,ind,check,tsum: array of integer;
ldata,i,j:integer;
procedure zero(m_zero:array of integer;length:integer);
begin
for i := 0 to (2*length+1) do begin
m_zero[i]:=0;
end;
end;
procedure data_check;
begin
for i := 0 to (2*ldata+1) do begin
ind[i]:=0;
check[i]:=0;
tsum[i]:=0;
end;
for i := 0 to ldata-1 do begin
for j := 0 to ldata-1 do begin
if data[i,j]=0 then begin
ind[i]:=j;
ind[ldata+j]:=i;
inc(check[i]);
inc(check[ldata+j]);
if i=j then begin
ind[2*ldata]:=i;
inc(check[2*ldata]); end;
if i+j=ldata-1 then begin
ind[2*ldata+1]:=i;
inc(check[2*ldata+1]); end; end;
end; end;
for i := 0 to ldata-1 do
for j := 0 to ldata-1 do begin
if check[i]=1 then begin
tsum[i]:=tsum[i]+data[i,j];
end;
end;
for i := 0 to ldata-1 do
for j := 0 to ldata-1 do begin
if check[ldata+j]=1 then begin
tsum[ldata+j]:=tsum[ldata+j]+data[i,j];
end;
end;
if check[2*ldata]=1 then begin
for i := 0 to ldata-1 do
for j := 0 to ldata-1 do begin
if i=j then
tsum[2*ldata]:=tsum[2*ldata]+data[i,j];
end;
end;
for i := 0 to ldata-1 do
for j := 0 to ldata-1 do begin
if check[2*ldata+1]=1 then begin
if i+j=ldata-1 then
tsum[2*ldata+1]:=tsum[2*ldata+1]+data[i,j];
end;
end;
for i := 0 to ldata-1 do
begin
if tsum[i]<>0 then
data[i,ind[i]]:=sum[i]-tsum[i];
end;
for j := 0 to ldata-1 do
begin
if tsum[ldata+j]<>0 then
data[ind[ldata+j],j]:=sum[ldata+j]-tsum[ldata+j];
end;
for i := 0 to ldata-1 do begin
for j := 0 to ldata-1 do begin
if tsum[2*ldata]<>0 then
data[ind[2*ldata],ind[2*ldata]]:=sum[2*ldata]-tsum[2*ldata];
if tsum[2*ldata+1]<>0 then
data[ind[2*ldata+1],ldata-1-ind[2*ldata+1]]:=sum[2*ldata+1]-tsum[2*ldata+1];
end;
end;
end;
begin
randomize;
ldata:=3;
setlength(ind,2*ldata+2);
setlength(check,2*ldata+2);
setlength(tsum,2*ldata+2);
setlength(sum,2*ldata+2);
setlength(data,ldata);
for i := 0 to ldata-1 do
setlength(data[i],ldata);
for i := 0 to ldata-1 do
for j := 0 to ldata-1 do begin
data[i,j]:=random(9)+1;
end;
for i := 0 to (2*ldata+1) do begin
sum[i]:=0;
end;
for i := 0 to ldata-1 do
for j := 0 to ldata-1 do begin
sum[i]:=sum[i]+data[i,j];
sum[ldata+j]:=sum[ldata+j]+data[i,j];
if i=j then
sum[2*ldata]:=sum[2*ldata]+data[i,j];
if i+j=ldata-1 then
sum[2*ldata+1]:=sum[2*ldata+1]+data[i,j];
end;
for i := 0 to ldata-1 do begin
for j := 0 to ldata-1 do begin
write(data[i,j],' '); end; writeln; end;
for i := 0 to 2*ldata+1 do begin
write(sum[i],' '); end;
for i := 0 to 5 do
data[random(ldata),random(ldata)]:=0;
writeln;
for i := 0 to ldata-1 do begin
for j := 0 to ldata-1 do begin
write(data[i,j],' '); end; writeln; end;
for i := 0 to ldata do begin
data_check();
data_check();
data_check();
end;
writeln;
for i := 0 to ldata-1 do begin
for j := 0 to ldata-1 do begin
write(data[i,j],' '); end; writeln; end;
readln;
end.
в чем нужна помощь: в том что мне надо рассмотреть тему более открыто. А точнее я прошу как бы написали её вы; нужно несколько решений одной задачи
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.