Сортировка строк матрицы по возрастанию сумм

Тема: 
Массивы

Дана матрица, состоящая из целых чисел. Найти сумму элементов каждой строки матрицы. Сортировать строки матрицы по возрастанию найденных сумм. Вывести на экран исходную матрицу и суммы строк, отсортированную матрицу и суммы.

Суммы строк можно находить при заполнении матрицы и записывать их в одномерный массив размерностью, равной количеству строк. Таким образом окажется, что номер элемента в этом массиве соответствует номеру строки матрицы, а значение есть сумма элементов соответствующей строки матрицы.

Будем сортировать по возрастанию одномерный массив, в который записаны суммы строк (в программе ниже используется метод сортировки "пузырьком"). Если выполняется обмен значений соседних ячеек в этом массиве, то следовательно надо обменять местами две строки матрицы. Так, если во второй ячейке одномерного массива оказывается число большее, чем в третьей, это значит, что сумма элементов второй строки матрицы больше, чем третьей. Следовательно, элементы второй строки матрицы надо обменять местами с элементами третьей строки. Обмен происходит в соответствующих столбцах.

Если номер очередного элемента в одномерном массиве k, то номер следующего элемента k+1. При обмене строк матрицы k и k+1 - это номера строк (первый индекс при обращении к элементам массива). Второй индекс изменяется в цикле от номера первого до номера последнего столбца. На каждой итерации этого цикла в соответствующем столбце элемент в строке k обменивается значением с элементом в строке k+1.

алг сортировка строк матрицы по возрастанию сумм
нач
  цел N = 6, M = 5
  целтаб t[1:N,1:M]
  целтаб s[1:N]
  цел b, i, j, k
  нц для i от 1 до N
    s[i] := 0
    нц для j от 1 до M
      t[i,j] := irnd(irnd(20))
      вывод t[i,j]:3
      s[i] := s[i] + t[i,j]
    кц
    вывод " | ", s[i], нс
  кц
  нц для i от 1 до M
    вывод "-----"
  кц
  вывод нс
  нц для i от 1 до N-1
    нц для k от 1 до N-i
      если s[k] > s[k+1] то
        b := s[k]
        s[k] := s[k+1]
        s[k+1] := b
        нц для j от 1 до M
          b := t[k,j]
          t[k,j] := t[k+1,j]
          t[k+1,j] := b
        кц 
      все
    кц
  кц
  нц для i от 1 до N
    нц для j от 1 до M
      вывод t[i,j]:3
    кц
    вывод " | ", s[i], нс
  кц
кон

Пример выполнения программы:

  1  2  1  7 11 | 22
  2 18 18  5  4 | 47
  1  2 10  1  9 | 23
  2  2  6 13  8 | 31
  1 11  7 18  3 | 40
  6  5  4  2  2 | 19
-------------------------
  6  5  4  2  2 | 19
  1  2  1  7 11 | 22
  1  2 10  1  9 | 23
  2  2  6 13  8 | 31
  1 11  7 18  3 | 40
  2 18 18  5  4 | 47