a:=0;
for i:=1 to m-1 do
begin
if x[i,1]=x[i,2] then a:=a+1;
if x[i,1]=x[i+1,2] then a:=a+1;
if x[i,1]=x[i+1,1] then a:=a+1;
for j:=2 to m-1 do
begin
if x[i,j]=x[i,j+1] then a:=a+1;
if x[i,j]=x[i+1,j] then a:=a+1;
if x[i,j]=x[i+1,j+1] then a:=a+1;
if x[i,j]=x[i+1,j-1] then a:=a+1;
end;
if x[i,m]=x[i+1,m] then a:=a+1;
if x[i,m]=x[i+1,m-1] then a:=a+1;
end;
for i:=1 to m-1 do
if x[m,i]=x[m,i+1] then a:=a+1
[Pascal] Двумерные массивы
Дан массив целых чисел MxM.Определить,сколько в нём пар соседних одинаковых элементов.Элементы считаются соседними,если их индексы в столбцах и/или в строках различаются не более чем на единицу.
в кратце - что бы не было при счете повторений мы идем по массиву и каждый раз сравниваем (проще нарисовать)
X --
/ | \
так мы проверим все пары и не будет лишних посчитано
Код:
получилось страшненько из-за того что я рассматривал крайние элементы вне цикла
можно написать все короче - засунув все в цикл и навесив проверку на выход за пределы массивы - но спрашивается зачем нам куча лишних сравнений в цикле
ps если не прав - извиняйте не проверял ))