Оформление массивов

  • Автор темы tarn
  • Дата начала
T

tarn

Гость
#1
Помогите, пожалуйста, разобраться:
нужно процедуру umnojeniye выполнить 81x81 (6561) раз, "пермножив" ею массивы 0000,0001,...,2221,2222 каждый на каждый.
Код:
program Diskret;
uses sysutils;

procedure umnojeniye(a,b:array[1..4] of byte);
var i,j,k,g,w:byte;
rezumn,pr,polin,rzn:array[1..10]of byte;
s:array[1..10,1..10]of byte;

begin
for i:=1 to 4 do
for j:=1 to 4 do
s[i,j]:=(a[i]*b[j])mod 3;

for i:=1 to 4 do
for j:=1 to 4 do
for k:=1 to 7 do
if i=k-j+1 then
rezumn[k]:=(rezumn[k]+s[i,j])mod 3;

polin[1]:=2; polin[2]:=1;polin[3]:=2;polin[4]:=2;polin[5]:=1;

g:=0;
repeat
for i:=0 to 2 do
if (((i*polin[1])mod 3)+rezumn[1])mod 3 = 0 then
begin
for j:=1 to 5 do
begin
pr[j]:=(polin[j]*i)mod 3;
rzn[j]:=(rezumn[j]+pr[j])mod 3;
end;
g:=g+1;
for w:=1 to 4 do
rezumn[w]:=rzn[w+1];
rezumn[5]:=rezumn[5+g];
break;
end;
until g>2;
for i:=2 to 5 do
Write(rzn[i],' ');
end;


var i,j,k,l:byte;
m:array[1..100,1..4]of byte;
ch:word;

begin
ch:=0;
for i:=0 to 2 do
begin
for j:=0 to 2 do
begin
for k:=0 to 2 do
begin
for l:=0 to 2 do
begin
ch:=ch+1;
m[ch,1]:=i;
m[ch,2]:=j;
m[ch,3]:=k;
m[ch,4]:=l;
end;
end;
end;
end;

for i:=1 to 81 do
for j:=1 to 81 do
begin
umnojeniye(m[i],m[j]); {здесь компилятор противится}
writeln;
end;
ReadLn;ReadLn;
end.
Проблема в этом моменте:
Код:
for i:=1 to 81 do
for j:=1 to 81 do
begin
umnojeniye(m[i],m[j]); {здесь компилятор противится}
writeln;
end;
В Lazarus всё собирается, но работает некорректно (первый элемент должен получиться 0000, последний 2200).
Наверно, таким образом m одномерный массив из двумерного нельзя делать, как исправить подскажите, пожалуйста.
 

Over

Well-Known Member
04.07.2007
116
0
#2
"Компилятор противится" - хотелось бы увидеть, что компилятор пишет.
Ответы "пишет чего-то непонятное" не устроят.