Есть ли на диагонали двумерного массива определенный элемент

Задача

Вводится определенное число. Проверить, есть ли такой элемент на диагонали матрицы (двумерного массива).

Решение

Во-первых, диагонали есть только у квадратных матриц (N=M). Во вторых, у таких двумерных массивов есть две диагонали - главная (из верхнего левого в нижний правый) и побочная (из правого верхнего угла в нижний левый).

В языке программирования Паскаль элементы главной диагонали матрицы имеют индекс [i,i]. Элементы побочной - [i,N-i+1].

Чтобы решить задачу будем перебирать элементы сначала главной, а затем побочной диагоналей и сравнивать их с заданным пользователем числом (переменная item в программе ниже). Если это совпадения, значит диагональ содержит определенный элемент.

const
    N = 10;
var
    arr: array[1..N,1..N] of integer;
    item: integer;
    i,j: byte;
    flag: boolean;
 
begin
    randomize;
    for i:=1 to n do begin
        for j:=1 to n do begin
            arr[i,j] := random(100);
            write(arr[i,j]:3);
        end;
        writeln;
    end;
    write('Введите элемент: ');
    readln(item);
 
    write('Есть ли он на главной диагонали? ');
    flag := false;
    for i:=1 to N do
        if arr[i,i] = item then begin
            writeln('ДА. Строка ',i,', столбец ', i);
            flag := true;
            break;
        end;
    if flag = false then
        writeln('НЕТ');
 
    write('Есть ли он на побочной диагонали? ');
    flag := false;
    for i:=1 to N do
        if arr[i,N-i+1] = item then begin
            writeln('ДА. Строка ',i,', столбец ', N-i+1);
            flag := true;
            break;
        end;
    if flag = false then
        writeln('НЕТ');
 
end.

Пример работы программы:

 59 16 80  4 89 65 13 68 26 60
 51 63 12 42 72 53 99 26 33  9
 62 78 28 76 34 96 10 12 30 15
 14 15 78 32 50 25 97 84 18 29
 32 56 60 79 33 96 20 71  5 45
 77 33 26 55 20 45 68 59 29 40
 56 57  2 86 43 97 91 35 82 67
 68 18 60 91  4 52 77 16 14 36
  8  5 67 68 95 12 38 60 58  2
 35 90 64 96 27 86 93 98 92  9
Введите элемент: 86
Есть ли он на главной диагонали? НЕТ
Есть ли он на побочной диагонали? ДА. Строка 7, столбец 4

В данной программе проверяется только первое вхождение числа в диагональ. Если есть несколько одинаковых чисел, то будут определено только первое. При этом цикл прервется (с помощью оператора break).

Тема

Динамические структуры

Уровень

Комбинированные задачи

Последняя редакция