С# - Вне границ массива [требует правки]

117
02 марта 2018, 13:45

Задание: Ввести двумерный целочисленный рваный массив и убрать из него положительные строки. Проблема: в определенном моменте индекс выскакивает за пределы массива. Не могу понять как исправить.

    class Program
{
    static int[][] MatrixInput(int n)
    {
        int m;
        int[][] arr = new int[n][];
        for (int i = 0; i < n; i++)
        {
            Console.Write("Количество элементов в {0} строке:  ", i + 1);
            m = int.Parse(Console.ReadLine());
            arr[i] = new int[m];
        }
        Console.Write("Введите элементы: \n");
        for (int i = 0; i < n; ++i)
            for (int j = 0; j < arr[i].Length; ++j)
            {
                Console.Write("a[{0},{1}]= ", i, j);
                arr[i][j] = int.Parse(Console.ReadLine());
            }
        return arr;
    }
    static void MatrixOutput(int[][] arr, int n)
    {
        for (int i = 0; i < n; i++)
            for (int j = 0; j < arr[i].Length; ++j) // Ошибка здесь
                Console.Write("{0,5} ", arr[i][j]);
    }
    static bool DeleteRow(int[] x)
    {
        foreach (int value in x)
        {
            if (value >= 0)
            {
                return false;
            }
        }
        return true;
    }
    static void Main(string[] args)
    {
        Console.WriteLine("Enter count of arrays");
        int n = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the elements of matrix: ");
        int[][] array = MatrixInput(n);
        int[] x = new int[n];
        int newSize = 0;
        foreach (int[] row in array)
        {
            if (DeleteRow(row))
            {
                newSize++;
            }
        }
        int[][] output = new int[newSize][];
        int rowCounter = 0;
        for (int i = 0; i < array.Length; i++)
        {
            if (DeleteRow(array[i]))
            {
                output[rowCounter] = array[i];
                rowCounter++;
            }
        }
            Console.WriteLine("Matrix after removing: ");
            MatrixOutput(output, n);
    }
}

}

Answer 1
if (!DeleteRow(row))
{
   newSize++;
}

MatrixOutput(output, output.Length);
READ ALSO
как передать в event перегрузку методов c# wpf

как передать в event перегрузку методов c# wpf

как передать в event перегрузку методов c# wpf, ситуация - есть button(wpf, mvvm) и есть textBox 5шт, нужно вызвать eventom один из перегруженных методов, сами методы

128
Насколько оптимальна работа с System.Linq?

Насколько оптимальна работа с System.Linq?

Добрый день, товарищи! Последнее время очень волнует вопрос оптимальности работы с LinqОдин знакомый уверял меня, что когда я вызываю

134
Циклы , loops , как работает цикл внутри цикла?

Циклы , loops , как работает цикл внутри цикла?

Добрый день , совсем недавно начал учить программирование на js , это мой первый ЯП , хотел бы у вас узнать как работают циклы внутри циклов,...

218
Помогите запустить проект

Помогите запустить проект

Помогите с запуском проекта, накрывает ошибками при сборке вебпака https://githubcom/cjsheets/angular-voting-app Не могу разобраться с firebase для него, в ридми толком...

157