Помощь - Поиск - Пользователи - Календарь
Полная версия: Матрица и наддиагональные элементы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
denisege
Всем привет!
В общем, такая проблемка sad.gif не могу решить задачу на матрицу. Скидываю картинку (фото задания, весит мало!)
Случай не тот, который описан в faq... Пожалуйста, помогите... Я просто в растерянности wacko.gif
Ну и напоследок выложу свои потуги smile.gif Я даже не думал выводить элементы, я просто заполнял массив и печатал его на экран, дабы отследить визуально последовательность выбора... Ну тупой я, тупой... mega_chok.gif

const n=9;
type arr=array[1..n,1..n] of integer;
var x:integer;
var mas:arr;

procedure diag (sdv:integer);
var i:integer;
begin
i:=0;
while (i+(sdv*2) <= n) do begin
inc(i);
mas[i+(sdv*2),i+sdv]:=1;
end;
end;

procedure hor (sdv:integer);
var i:integer;
begin
i:=0;
while (i+(sdv*2) <= n) do begin
inc(i);
mas[1+sdv,1+i+(sdv*2)]:=2;
end;
end;

procedure vert (sdv:integer);
var i:integer;
begin
i:=0;
while (i+(sdv*2) <= n) do begin
inc(i);
mas[i+sdv,n-sdv]:=3;
end;
end;

procedure draw;
var dn,dm:integer;
begin
for dn:=1 to n do begin
for dm:=1 to n do begin
write (mas[dn,dm],'');
end;
writeln;
end;
end;

BEGIN
for x:=0 to 0 do begin
diag(x); hor(x); vert(x);
end;
draw;
readln;
END.
volvo
Цитата
Случай не тот, который описан в faq
Практически тот же случай... Чуть-чуть поправить надо было:
const
n = 6;
above = ((sqr(n) - n) div 2) + n;

type arr = array[1..n,1..n] of integer;
const a: arr = (
( 1, 2, 3, 4, 5, 6),
(11, 12, 13, 14, 15, 16),
(21, 22, 23, 24, 25, 26),
(31, 32, 33, 34, 35, 36),
(41, 42, 43, 44, 45, 46),
(51, 52, 53, 54, 55, 56)
);

var i, j, k, count: integer;
BEGIN
i := n; j := n;
count := 1;

for k := 0 to n div 2 do begin
while (count <= above) and (i > k) and (j > k) do begin
write(a[i, j]:4); dec(i); dec(j); inc(count)
end;
inc(i); inc(j);
inc(j);

while (count <= above) and (j <= n - k) do begin
write(a[i, j]:4); inc(j); inc(count)
end;
dec(j);
inc(i);

while (count <= above) and (i < n - k) do begin
write(a[i, j]:4); inc(i); inc(count)
end;
dec(i);
dec(i); dec(j);
end;
readln;
END.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.