Курсовая работа: Работа с двумерными числовыми массивами
Циклический сдвиг строк
Далее функция CircuarShift , осуществляющая циклический сдвиг строк матрицы вверх, или вниз. Направление сдвига определяется булевым параметром shiftUp, передаваемым процедуре:
1 {
2 осуществляет циклический сдвиг строк матрицы arr вверх при shiftUp = true,
3 и вниз, при shiftUp = false
4 }
5 procedure CircuarShift(var arr: TMatrix; shiftUp: boolean);
6 var
7 RowN: integer;
8 tmpRow: TVector;//временная переменная для хранения строки иатрицы
9
10 begin
11
12 if high(arr) < 1 then exit;//если в матрице меньше двух строк - выходим
13 if shiftUp then
14 begin//если сдвиг вверх
15 tmpRow:= arr[high(arr)];//сохраним последнюю строку матрицы
16 arr[high(arr)]:= arr[0];//приравняем последнюю строку первой
17 for rowN:= 0 to high(arr)-2 do
18 begin//для строк с нулевой по пред-предпоследнюю
19 arr[rowN]:= arr[rowN+1];//текущая строка равна нижней
20 end;
21 arr[high(arr)-1]:= tmpRow;//предпоследнюю строку приравняем последней
22 end
23 else
24 begin//иначе, если сдвиг вниз
25 tmpRow:= arr[0];//сохраним нулвую строку
26 arr[0]:= arr[high(arr)];//приравняем нулевую строку последней
27 for rowN:= high(arr) downto 2 do