Здравствуйте. Помогите, пожалуйста, с задачей. Нужно определить, есть ли одинаковые элементы в двумерном массиве. Я понимаю, что перебирать весь массив каждый раз не нужно, но по-другому реализовать не получается.
| Код | program test; uses crt; const N=10; var i,j,k, m, maxi, maxj, num:integer; a:array [1..N, 1..N] of integer; prover : boolean; begin clrscr; randomize; Write('Количество строк в массиве до ', N,' '); read(maxi); write('Количество столбцов в массиве до ', N,' '); read(maxj); writeln; for i:=1 to maxi do begin for j:=1 to maxj do begin a[i, j]:=round((random*21)-10); write(a[i,j],' '); end; writeln; end; writeln; prover:=false; m:=1; k:=1; num:=a[m,k]; while ( k<=maxj ) do begin for j:=1 to maxj do begin for i:=1 to maxi do begin if a[i, j]=num then begin if ((i<>m) or(j<>k) ) then prover:=true; end; if (prover) then break; end; if(prover ) then break; end; if(prover) then break;
if(prover=false) then begin if ((m+1 > maxi) and(k<=maxj)) then begin m:=1; k:=k+1; num:=a[m,k]; end
else begin m:=m+1; num:=a[m,k]; end; end;
end; writeln; if (prover) then writeln('Одинаковые элементы есть') else writeln('Одинаковых элементов нет'); end.
|
|