Помощь
Добавлено: 14 дек 2009, 20:49
Задача: Определить номера строк и столбцов двумерного массива, которые равны между собой.
program p;
uses crt;
const m = 3;
var A:array[1..m,1..m] of byte;
B:array[1..m,1..m] of boolean;
i,j,k:byte;
begin clrscr;
for i:=1 to m do
begin
for j:=1 to m do
begin
a[i,j]:=random(2);
write(a[i,j]:2,' ');
end;
writeln
end;
for i:=1 to m do
for j:= 1 to m do
B[i,j]:=false;
for i:= 1 to m do begin
for j:= 1 to m do begin
k:=0;
while true do begin
k:=k+1;
if k>m then break;
if (not (A[i,k] = A[k,j])) then break;
if k=m then begin B[i,j]:= true; break end;
end;
end;
end;
for i:= 1 to m do
for j:=1 to m do
if B[i,j]=true then writeln('strochka ',i, ' sovpadaet so stolbcom ', j);
readln;
end.
Вроде пашет, но объясните мне плиз как работает эта строчка:while true do begin??
program p;
uses crt;
const m = 3;
var A:array[1..m,1..m] of byte;
B:array[1..m,1..m] of boolean;
i,j,k:byte;
begin clrscr;
for i:=1 to m do
begin
for j:=1 to m do
begin
a[i,j]:=random(2);
write(a[i,j]:2,' ');
end;
writeln
end;
for i:=1 to m do
for j:= 1 to m do
B[i,j]:=false;
for i:= 1 to m do begin
for j:= 1 to m do begin
k:=0;
while true do begin
k:=k+1;
if k>m then break;
if (not (A[i,k] = A[k,j])) then break;
if k=m then begin B[i,j]:= true; break end;
end;
end;
end;
for i:= 1 to m do
for j:=1 to m do
if B[i,j]=true then writeln('strochka ',i, ' sovpadaet so stolbcom ', j);
readln;
end.
Вроде пашет, но объясните мне плиз как работает эта строчка:while true do begin??