Функция для вычисления суммы элементов диагоналей матрицы (КуМир)

Тема: 
Функции

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

Поскольку функция должна вычислять либо сумму элементов главной диагонали, либо побочной, то в нее надо передать "сообщение" о том, по какому пути идти. Например, пользователь вводит специальный символ, который обозначает, что вычисляться должна главная диагональ. Символ присваивается переменной. Если вычисляться должна побочная диагональ, то символ будет другим, однако должен присваиваться той же переменной. При вызове функции в нее передается значение переменной, обозначающей по какому пути вычисления идти.

Диагонали есть только у квадратной матрицы. Главная идет из левого верхнего угла в правый нижний, а побочная из правого верхнего в левый нижний.

Элементы, расположенные на главной диагонали, имеют одинаковые первый и второй индексы. У элементов расположенных на побочной диагонали индексы "обратны". Если номер строки равен 1, то номер столбца будет последним (N). Если номер строки будет равен 2, то номер столбца будет предпоследним (N-1). Если же номер строки будет последним, то номер столбца будет первым.

цел N = 7
цел таб a[1:N,1:N]
алг 
нач
  цел i, j, sum
  сим ch
  нц для i от 1 до N
    нц для j от 1 до N
      a[i,j] := int(rand(0,10))
      вывод a[i,j], " "
    кц
    вывод нс
  кц
  вывод "Главная (г) или побочная (п): "
  ввод ch
  если ch = "г" или ch = "п" то
    sum := diag(ch)
    вывод sum
  все
кон
 
алг цел diag(сим c)
нач
  цел s, i, j
  s := 0
  нц для i от 1 до N
    если c = "г" то 
      s := s + a[i,i]
     иначе
      s := s + a[i,N-i+1] 
    все
  кц
  знач := s
кон

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

4 4 2 3 1 3 7 
3 8 3 6 3 3 3 
8 9 0 8 6 2 2 
2 3 4 0 6 8 2 
4 0 6 7 3 2 6 
6 0 3 6 2 3 4 
6 2 5 7 6 3 0 
Главная (г) или побочная (п): п
28