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

Как заполнить матрицу змейкой в Паскале?

Нужно заполнить матрицу
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13
Нужно только чтобы они поочередно заполнялись (первая строка от 1 до 4, вторая от 5 до 8 (слева на право) и так далее).
 k := 0;
for i := 1 to 4 do
for j := 1 to 4 do begin
inc(k);
if odd(i) then a[i, j] := k else a[i, 5 - j] := k
end;
 for i := 1 to 4 do 
for j := 1 to 4 do begin
if odd(i) then a[i, j] := (i - 1) * 4 + j else a[i, j] := i * 4 + 1 - j;
Петр Грачев
Петр Грачев
84 631
Лучший ответ
Чётные ряды (если с 0 нумеровать) заполнять слева направо, нечётные заполнять справа на лево. Не вижу сложности.
Павел Иваненко
Павел Иваненко
56 218
Для заполнения матрицы "змейкой" в Паскале можно использовать следующий алгоритм:

1. Создайте пустую матрицу нужного размера.
2. Инициализируйте переменные для отслеживания текущей строки, текущего столбца и текущего значения.
3. Установите начальное значение текущей строки и текущего столбца в 0.
4. Используйте цикл для заполнения матрицы.
- Запишите текущее значение в матрицу на текущих координатах.
- Увеличьте текущее значение на 1.
- Если текущая строка четная:
- Если текущий столбец меньше размера матрицы минус 1, увеличьте текущий столбец на 1.
- Иначе, увеличьте текущую строку на 1.
- Если текущая строка нечетная:
- Если текущий столбец больше 0, уменьшите текущий столбец на 1.
- Иначе, увеличьте текущую строку на 1.
5. Повторяйте шаг 4 до заполнения всех элементов матрицы.

Вот пример кода на языке Паскаль, который демонстрирует заполнение матрицы "змейкой":

```pascal
const
N = 4; // размер матрицы

var
matrix: array[1..N, 1..N] of Integer;
i, j, value: Integer;

begin
value := 1;
for i := 1 to N do
begin
if i mod 2 = 0 then
begin
for j := 1 to N do
begin
matrix[i, j] := value;
value := value + 1;
end;
end
else
begin
for j := N downto 1 do
begin
matrix[i, j] := value;
value := value + 1;
end;
end;
end;

// Вывод матрицы на экран
for i := 1 to N do
begin
for j := 1 to N do
begin
Write(matrix[i, j]:4);
end;
Writeln;
end;
end.
```

Этот код создаст и заполнит матрицу "змейкой" с указанными значениями.
Husik Manasaryan
Husik Manasaryan
1 819