Другие языки программирования и технологии
Матрица "по змейке" в 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.
Порядок обхода тоже легко меняется.
Удачи!
Вот еще вариантик. В принципе, одно и то же, но значительно проще. Заполняет, правда, сверху в низ, но переделать под ваши требования просто. Достаточно поменять местами две строки.
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.
Порядок обхода тоже легко меняется.
Удачи!
Где написанно "Введите массив" , или про поро порядок, можете поменять слово массив на матрицу, как Вам будет угодно. Только будте внимательны и вводите сначало размерность по горизонтали, а потом по вертикали (т. е. сначало по Х потом по У, ну я это вроде указал :) ). Блин, сделеть сделал а не понятно почему текст не корректно отображает :( Будет картинка значит :)


Похожие вопросы
- Матрица в языке программирования Pascal.
- Скиньте пожалуйста рабочий код для поиска обратной матрицы методом гаусса, в Pascal ABC?
- Змейка [Pascal ABC]
- отсортировать рандомную матрицу змейкой Язык СИ
- Помогите с обходим матрицы змейкой (нужно отредактировать формулу)
- Как заполнить матрицу змейкой в Паскале?
- Скиньте пожалуйста игру змейка (как в тетрисе) , написанную на языке Pascal ABC?
- pascal or delphi
- Программирование. Матрицы. Pascal.
- Один вопрос по Pascal (или Object Pascal, или Delphi) (не надо ничего решать, просто один вопрос)