Здравствуйте, Петров Иван Сергеевич!
Матрица называется трехдиагональной, если все ее элементы, кроме элементов главной и примыкающих к ней диагоналей, равны нулю. Выглядит это примерно так:
Координаты элементов главной диагонали определяются условием равенства номера столбца номеру ряда, т.е i=j. Соседние диагонали можно выразить условиями j=i-1 и j=i+1 для левой и правой диагоналей соответственно. Для того, чтобы проверить условие задачи, достаточно проверить равенство нулю всех элементов, этому условию не удовлетворяющих. Это можно выразить, например, таким условием:
[i] if (not ((i=j) or (j=i+1) or (j=i-1))) and (a[i, j]<>0)[/i] - этот элемент нарушает условие трёхдиагональности
Честно скажу, я не знаю, обязательно ли должны быть ненулевыми элементы на самих диагоналях, поэтому это условие я не проверяю. Если необходимо - достаточно добавить проверку противоположного условия:
[i] if ((i=j) or (j=i+1) or (j=i-1)) and (a[i, j]=0)[/i] - этот элемент нарушает (
возможно) условие трёхдиагональности
Для упрощения кода в случае нахождения одного несоответствия программа завершается через halt - чтобы не использовать флаги.
Код в приложении.
Удачи!
Приложение:
uses crt; {модуль для работы процедур clrscr, readkey }
Var a: array [1..10, 1..10] of integer;
i, j, n: integer;
begin
writeln ('Vvedite n:'); {Ввод данных}
readln (n);
writeln ('Vvedite elementi:');
for i:=1 to n do
for j:=1 to n do
readln (a[i, j]);
clrscr; {Очистка экрана}
for i:=1 to n do {контрольный вывод}
begin
for j:=1 to n do
write (a[i, j]:4);
writeln;
end; {проверка условий}
for i:=1 to n do
for j:=1 to n do {тут при необходимости можно добавить ещё проверку}
if (not ((i=j) or (j=i+1) or (j=i-1))) and (a[i, j]<>0) then
begin
writeln ('Net'); {результат проверки}
readkey; {ожидание клавиши}
halt (1); {выход}
end;
writeln ('Da'); {результат проверки}
readkey; {ожидание клавиши}
end.