![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 17.12.2010
Сообщений: 2
|
![]()
Нужна помощь по курсавой
Есть задача: Нужно создать матрицу 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. в чем нужна помощь: в том что мне надо рассмотреть тему более открыто. А точнее я прошу как бы написали её вы; нужно несколько решений одной задачи |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Востановление данных!!! | PARtiZAN1988 | Софт | 5 | 21.05.2012 13:52 |
Востановление данных в матрице | zDevil | Помощь студентам | 0 | 23.12.2010 18:24 |
Востановление данных | Хом | Операционные системы общие вопросы | 1 | 04.10.2010 14:30 |
Востановление системы! | stenl1 | Операционные системы общие вопросы | 3 | 23.10.2009 00:25 |