При решении задачи нужно учесть тот факт, что если все числа, стоящие в углах квадратика, различны, то их сумма равна 17 (0+1+5+11=17). Заметим, что верно и обратное утверждение. Таким образом, нужно организовать вычисление и проверку сумм заданных квадратиков.
Приведем текст программы:
Program Problem33_4; Var A: Array[1..50,1..50] Of Byte; m,i,j,sum:Byte; Begin Write('Задайте размерность матрицы: '); ReadLn(m); WriteLn('Укажите элементы массива'); For i:=1 To m Do For j:=1 To m Do Begin Write('A[', i, ',', j,']:='); ReadLn(A[i,j]); End; WriteLn('Исходный массив:'); For i:=1 To m Do Begin For j:=1 To m Do Write(A[i,j]:3); WriteLn; End; sum:=0; {Начальное количество квадратиков.} For i:=1 To m-1 Do For j:=1 To m-1 Do If A[i,j]+A[i,j+1]+A[i+1,j]+A[i+1,j+1]=17 Then sum:=sum+1; WriteLn('Количество искомых квадратиков = ',sum); End.