Необычный
Сообщения: 4463
Благодарности: 994
|
Профиль
|
Сайт
|
Отправить PM
| Цитировать
dasha131, у тебя вполне рабочий код.
Собственно он же с "диагностическими" дополнениями.
Код:
program diagonal;
const
n=8;
var
a:array[1..n,1..n]of integer;
f:boolean;
l,i,j:integer;
begin
l:=1;
// поставил автоматический ввод матрицы, чтобы не руками
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:=abs(i-j);
//if здесь для красоты, т.к. мне лень придумывать как убрать все лишнее с ненужных диагоналей. Ради практического интереса его можно закомментировать
if a[i,j]<=1 then a[i,j]:=1
else a[i,j]:=0;
// write('Enter A[',i,',',j,']:=');readln(a[i,j]);
end;
for i:=1 to n do
for j:=1 to n do
if (abs(i-j)>l)and(a[i,j]<>0)then begin
//повторяет обнуление не главных диагоналей, служит для проверки правильности условия. Писал раньше чем тот if сверху, стирать не стал
// a[i,j]:=0;
//writeln(i,' ',j);
//f:=false;
end;
f:=true;
for i:=1 to n do
for j:=1 to n do
if (abs(i-j)>l)and(a[i,j]<>0)then begin
writeln(i,' ',j); // посмотреть, на какой элемент вызвал "падение" флага
f:=false;
end;
write('matrix band:',f:7);
writeln;
//распечатка матрицы для наглядного поиска
for i:=1 to n do begin
for j:=1 to n do
write(a[i,j], ' ');
writeln;
end;
readln;
end.
|
-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)
Отправлено: 16:19, 16-10-2010
| #2
|