Алгоритм не хочет перезаписывать массив C#

Помогите пожалуйста с задачей, алгоритм странно ведёт себя, хотя все returnы выполнены. Хочется понять, что не так делаю

//Дана квадратная матрица A порядка M. Найти сумму элементов каждой ее диагонали,
//параллельной главной (начиная с одноэлементной диагонали A1,
//M
//).
using System;

namespace Zadacha41_LR10
{
    class Program
    {
        static void Main(string[] args)
        {
            try {
                Console.WriteLine("Введите M-размерн матрицы:");
                int m = int.Parse(Console.ReadLine());
                int[,] arrInt;
                arrInt = new int[m, m];
                //int[] b = new int[2 * m - 1];

                Input(m);
                int[] b =Algorhythm(arrInt,m);
                Output(b);
            }

           catch(Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
        static int [,] Input(int m)
        {
            int[,] arrInt;
            arrInt = new int[m, m];
            for (int i = 0; i < arrInt.GetLength(0); i++)
                for (int j = 0; j < arrInt.GetLength(1); j++)
                {
                    Console.WriteLine("Введите элемент матрицы{0}{1}", i, j);
                    arrInt[i, j] = int.Parse(Console.ReadLine());
                }
            return arrInt;
                

        }
        static int[] Algorhythm(int[,] arrInt, int m)
        {
           
            int count = 0; int sum;
            int[] b = new int[2 * m - 1];
            int k = m;
            for (int i = 0; i < 2 * m - 1; i++)
            {
                 sum = 0;

                m = 0;

                for (int j = k; j < m; j++)
                {

                    sum += arrInt[m, j];
                    m++;
                    b[count] = sum;
                    count++;
                    Console.WriteLine(b[count]);
                    k--;

                }
               
            }
            return b;
        }
        static void Output(int[]b)
        { 
            for(int i=0;i<b.Length;i++)
            {
                Console.WriteLine("Суммы элементов, параллельных главной диагонали:");
                Console.Write("{0}", b[i]);
            }
        }
}
}

введите сюда описание изображения

Необходимая отладка:

Необходимая отладка: 21 37 46 125 123 15

Отладка Текущая: 0 0 0 0 0 0 0 0 0


Ответы (2 шт):

Автор решения: Alex Krass

Ознакомьтесь с отладкой приложений через отладчик и возьмите на вооружение. Это поможет вам лучше понимать происходящие в вашей программы процессы и отлавливать логические ошибки. Когда вы запускаете свое приложение в debug версии, вы можете поставить точку остановки и посмотреть, чему равны различные переменные.

К примеру ниже, поставив точку остановки от 20-й строки, я могу посмотреть спокойно значение введенной мною переменной m и содержимое массива.

введите сюда описание изображения

К тому же можно от точки проходить пошагово код и по вызову QuickWatch просматривать содержимое в более удобном виде. К примеру ниже видно, что в коде Algorhythm значение m=0, j=3 и j < m всегда будет false. И раз вы занулили m, то верхний цикл тоже закончит работу.

введите сюда описание изображения

Освоив этот инструмент, вам станет намного легче работать. После того, как поправите arrInt = Input(m);, ищите проблемы в коде Algorhythm, он неправильно отрабатывает.

→ Ссылка
Автор решения: Michal_retrovich

Считает только для первой верхней диагонали справа. На этом мои навыки исчерпаны Если вы знаете как исправить, дайте знать :-)



//41.Дана квадратная матрица A порядка M. Найти сумму элементов каждой ее диагонали,
//параллельной главной (начиная с одноэлементной диагонали A1,
//M
//).
using System;

namespace Zadacha41_LR10
{
    class Program
    {
        static void Main(string[] args)
        {
            try {
                Console.WriteLine("Введите M-размерн матрицы:");
                int m = int.Parse(Console.ReadLine());
                int[,] arrInt;
                arrInt = new int[m, m];
                //int[] b = new int[2 * m - 1];

                arrInt = Input(m);
                int[] b =Algorhythm(arrInt,m);
                Output(b);
            }

           catch(Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
        static int [,] Input(int m)
        {
            int[,] arrInt;
            arrInt = new int[m, m];
            for (int i = 0; i < arrInt.GetLength(0); i++)
                for (int j = 0; j < arrInt.GetLength(1); j++)
                {
                    Console.WriteLine("Введите элемент матрицы{0}{1}", i, j);
                    arrInt[i, j] = int.Parse(Console.ReadLine());
                }
            return arrInt;
                

        }
        static int[] Algorhythm(int[,] arrInt, int m)
        {
           
            int count = 0; int sum = 0; 
            int[] b = new int[count];
            int k = 2*arrInt.GetLength(0)-1;
            int f= arrInt.GetLength(1)-1;
            int N = arrInt.GetLength(0);
            int s = arrInt.GetLength(1);
            for (int i = 0; i < N - 1 && f >= 0;)
            {
                if (i == m)
                {
                    break;
                }
                f--;
                i++;
                for (int j = s; j > 0 + i;)
                {
                    sum = 0;
                    if (j < 0 & j == 0)
                    {
                        break;
                    }
                    Array.Resize(ref b, count + 1);
                    j--;
                    sum += arrInt[i, j] + arrInt[i, f];
                    if (b[count] == 0)
                    {
                        b[count] = sum;
                    }
                    count++;


                    //return b;
                }
              
            }
            return b;

        }
        static void Output(int[]b)
        { 
            for(int i=0;i<b.Length;i++)
            {
                Console.WriteLine("Суммы элементов, параллельных главной диагонали:");
                Console.Write("{0}", b[i]);
            }
        }
}
}
→ Ссылка