Просуммировать элементы, расположенные на диагоналях параллельных главной - C#
Формулировка задачи:
Для заданного двумерного массива размером N x N просуммировать элементы, расположенные на диагоналях параллельных главной. Результат поместить в одномерный массив.
-------------------
Помогите исправить. Выводит неправильно.
-------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace acht
{
class programm
{
static void Main()
{
int n;
int sum = 0, sumS = 0;
string str;
Console.WriteLine("Введите размерность массива");
n = Convert.ToInt32(Console.ReadLine());
int[,] B = new int[n, n];
int[,] A = new int[n, n];
Console.WriteLine("Введите элементы массива");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
str = Console.ReadLine();
B[i, j] = Convert.ToInt32(str);
}
Console.WriteLine();
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
str = Console.ReadLine();
A[i, j] = Convert.ToInt32(str);
}
Console.WriteLine();
}
Console.WriteLine("Массив В ");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write("{0,5}", B[i, j]);
Console.WriteLine();
}
Console.WriteLine();
Console.WriteLine("Массив A ");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write("{0,5}", A[i, j]);
Console.WriteLine();
}
int[] k = new int[2 * B.GetLength(0) - 1];
int[] l = new int[2 * A.GetLength(0) - 1];
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
sum += B[n - 1 - i + j, j];
sumS += B[j, n - 1 - j];
}
k[i] = sum;
k[k.Length - i - 1] = sumS;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
sum += A[n - 1 - i + j, j];
sumS += A[j, n - 1 - j];
}
l[i] = sum;
l[l.Length - i - 1] = sumS;
}
Console.WriteLine("Суммы диагоналей матрицы В: {0}", string.Join(", ", k));
Console.WriteLine("Суммы диагоналей матрицы А: {0}", string.Join(", ", l));
Console.Read();
}
}
}Решение задачи: «Просуммировать элементы, расположенные на диагоналях параллельных главной»
textual
Листинг программы
int[] k = new int[2 * B.GetLength(0) - 2];
int kl = 2 * B.GetLength(0) - 2;
for (int i = 1; i < n; i++)
{
sum = 0; sumS = 0;
for (int j = 1; j <= i; j++)
{
sum += B[n - 1 - i + j, j];
sumS += B[j, n - 1 - j];
}
k[i - 1] = sum;
k[kl - i] = sumS;
}