Просуммировать элементы, расположенные на диагоналях параллельных главной - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д