Курсовая работа: Работа с двумерными числовыми массивами

54 direction:= left;//сменим направление на "влево"

55 dec(rightB);//сдвинем правую границу к центру

56 dec(ColN);//сдвинемся влево

57 end;

58

59 left://если влево

60 if ColN > leftB then dec(ColN)//если не дошли до левой границы - сдвигаемся влево

61 else

62 begin//иначе - прошли верхнюю строку

63 direction:= down;//сменим направление на "вниз"

64 inc(topB);//сдвинем верхнюю границу к центру

65 inc(RowN);//сдвинемся вниз

66 end;

67 end;

68 end;

69 end;

Сортировка строк матрицы

Наконец упорядочивание строк матрицы по убыванию суммы элементов каждой строки. Вспомогательная функция getRowSum возвращает сумму элементов заданной строки:

1 {возвращает сумму элементов RowN-ой строки матрицы arr}

2 function getRowSum(const arr: TMatrix; RowN: integer): Int64;

3 var ColN: integer;

4 begin

5 Result:= 0;

6 if RowN > high(arr) then exit;//если в матрице нет RowN-ой строки - выходим

7 for ColN:= 0 to high(arr[RowN]) do//суммируем элементы строки

8 Result:= Result + arr[RowN, ColN];

9 end;

Сама сортировка осуществляется посредством процедуры SortRows . Был выбран алгоритм прямой вставки, так как число строк в матрице не предполагается большим, а этот алгоритм эффективен на небольших наборах данных. В любом случае сортировка осуществляется быстро, так как при перемене мест строк не происходит копирование данных, но просто переставляются местами указатели. Листинг этой функции:

1 {сортирует строки матрицы по убыванию сумм элементов каждой строки}

К-во Просмотров: 518
Бесплатно скачать Курсовая работа: Работа с двумерными числовыми массивами