Другие языки программирования и технологии

Матрица "по змейке" в Pascal

Поскольку я новичёк в работе с Паскалем, очень требуется ваша помощь! Задание: Матрицу размером n*m заполнить целыми числами от 1 до n*m "по змейке". Вот так вот, примерно: 3 4 5 6 2 11 12 7 1 10 9 8 Даже почитай электронный учебник не всё до конца ясно. Напишите скрипат, пожалуйста. Ну, или хотя бы основные самые сложные его элементы. Заранее спасибо!
Доброго времени суток.

Вот еще вариантик. В принципе, одно и то же, но значительно проще. Заполняет, правда, сверху в низ, но переделать под ваши требования просто. Достаточно поменять местами две строки.

uses Crt;
const n = 6;
m = 4;

var
a : array[1..n, 1..m] of Integer;
k, c, i, j : Integer;

begin
ClrScr;

{это заполнение массива}
c := 1;
k := 1;
while c <= m do begin {пока не заполнили все столбцы}
for i:=1 to n do begin a[i,c] := k; k := k + 1; end; {идем сверху вниз по строкам}
c := c + 1;
for i:=n downto 1 do begin a[i,c] := k; k := k + 1; end; {а теперь снизу вверх}
c := c + 1;
end;

{это вывод для контроля}
for i:=1 to n do begin
for j:=1 to m do Write(a[i,j]:3);
WriteLn;
end;

ReadLn;
end.

Тьфу ты.. . Прочитал змейкой и запостил змейку. У вас нарисована спираль. Ну что ж, получите спираль

uses Crt, DOS;
const
m = 6;
n = 4;
var
A : array [1..m,1..n] of Integer;
i, j, k : Integer;
RowS, RowE, ColS, ColE : Integer;

begin
ClrScr;

RowS := 1;
RowE := m;
ColS := 1;
ColE := n;

k := 0;
while (RowS <= RowE) or (ColS <= ColE) do begin
i := RowS;
j := ColS - 1;
while j < ColE do begin Inc(k); Inc(j); A[i,j] := k; end;
RowS := RowS + 1;

while i < RowE do begin Inc(k); Inc(i); A[i,j] := k; end;
ColE := ColE - 1;

while j > ColS do begin Inc(k); Dec(j); A[i,j] := k; end;
RowE := RowE - 1;

while i > RowS do begin Inc(k); Dec(i); A[i,j] := k; end;
ColS := ColS + 1;
end;

for i:=1 to m do begin
for j:=1 to n do Write(A[i,j]:3);
WriteLn;
end;

ReadLn;
end.

Порядок обхода тоже легко меняется.

Удачи!
Константин Воденников
Константин Воденников
59 613
Лучший ответ
Где написанно "Введите массив" , или про поро порядок, можете поменять слово массив на матрицу, как Вам будет угодно. Только будте внимательны и вводите сначало размерность по горизонтали, а потом по вертикали (т. е. сначало по Х потом по У, ну я это вроде указал :) ). Блин, сделеть сделал а не понятно почему текст не корректно отображает :( Будет картинка значит :)