Как попарно поменять столбцы в двумерном массиве - Turbo Pascal
Формулировка задачи:
Поторопился отправить запрос на тему: "Как попарно поменять столбцы
в двумерном массиве". Всё таки я её сделал сам.
А вот как расположить эти два массива рядом не получается.
Вот эта программа:
На выходе имеем:
Почему то не получается расположить эти два массива рядом
Решение задачи: «Как попарно поменять столбцы в двумерном массиве»
textual
Листинг программы
uses Crt; const N = 4; var A: array[1..N, 1..N] of integer; i, j, X: integer; begin ClrScr; randomize; writeln(' Исходный массив:'); for i:= 1 to N do begin for j:= 1 to N do begin A[i, j]:=-5+Random(50); write(A[i, j]:3); end; writeln; end; {Блок попарного обмена столбцами} for j:=1 to n div 2 do for i:=1 to n do begin X:= A[i, j]; A[i, j]:= A[i, n- j + 1]; A[i, n - j + 1]:= X; end; gotoXY(5*n,1); write(' Изменённый массив:'); for i:=1 to N do begin gotoXY(5*n,1+i); for j:= 1 to N do write(A[i, j]:3); end; readln end.
Объяснение кода листинга программы
- Объявлены переменные:
- A - двумерный массив размером NxN для хранения целочисленных значений;
- i, j, X - целочисленные переменные для выполнения операций в циклах.
- Задано значение константы N равное 4, что означает размерность массива.
- Выполняется итерация по исходному массиву A двумя вложенными циклами:
- внешний цикл от 1 до N (т.е. по строкам);
- внутренний цикл от 1 до N (т.е. по столбцам).
- В каждой ячейке массива A[i, j] случайным образом присваивается значение в диапазоне от -5 до 45 (включительно).
- Выводится значение каждой ячейки массива A[i, j] в отдельной строке.
- Выполняется блок попарного обмена столбцами:
- внешний цикл от 1 до N/2 (т.е. по чётным индексам столбцов);
- внутренний цикл от 1 до N (т.е. по всем индексам строк).
- В каждой итерации внутреннего цикла выполняется:
- переменная X принимает значение ячейки A[i, j];
- значение ячейки A[i, j] присваивается значению ячейки A[i, N-j+1] (т.е. ячейка A[i, N/2+i-1] получает значение X);
- значение ячейки A[i, N-j+1] присваивается значению переменной X.
- Выполняется смещение курсора в начало нового массива (5*N,1).
- Выводится изменённый массив A с помощью двух вложенных циклов:
- внешний цикл от 1 до N (т.е. по строкам);
- внутренний цикл от 1 до N (т.е. по столбцам).
- Каждое значение ячейки массива A[i, j] выводится в отдельной строке с помощью функции write(A[i, j]:3).