Просуммировать элементы, расположенные на диагоналях параллельных главной - 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;
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы