Search code examples
c#differencediagonal

diagonal difference OutOfRange Exception C#


I have to write a program that finds the difference between the sums of square matrix diagonals for homework, but my code throws IndexOutOFRange exception and I have no idea how to fix it.

Source code below: //input 3 11 2 4 4 5 6 10 8 -12 //desired output: 15

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


    class diagonalDifference
    {
        static void Main()
        {

    int N = Convert.ToInt16(Console.ReadLine());
    int[,] arr = new int[N, N];
    string str = string.Empty;

    for (int i = 0; i < N; ++i)
    {
        string[] strArr = Console.ReadLine().Split(' ');
        for (int j = 0; j < strArr.Length; ++j)
        {
            arr[i, j] = Convert.ToInt16(strArr[j]);
        }
    }

    int left = 0, right = N - 1, ldTotal = 0, rdTotal = 0;
    while (left <= right)
    {


    ldTotal += arr[left, left];


    rdTotal += arr[left++, right];
    }    

    Console.WriteLine(Math.Abs(ldTotal - rdTotal));



     }
        }

Solution

  •  class diagonalDifference
        {
            static void Main()
            {
    
        int N = Convert.ToInt16(Console.ReadLine());
        int[,] arr = new int[N, N];
        string str = string.Empty;
    
        for (int i = 0; i < N; ++i)
        {
            string[] strArr = Console.ReadLine().Split(' ');
            for (int j = 0; j < strArr.Length; ++j)
            {
                arr[i, j] = Convert.ToInt16(strArr[j]);
            }
        }
    
        int left = 0, right = N - 1, ldTotal = 0, rdTotal = 0;
        while (left <= (N-1))
        {
    
    
        ldTotal += arr[left, left];
    
    
        rdTotal += arr[left, right];
    Left++;
    Right--;
        }    
    
        Console.WriteLine(Math.Abs(ldTotal - rdTotal));
    
    
    
         }
            }