Удаление из массива первой строки, в которой есть отрицательный элемент - C#
Формулировка задачи:
Помогите, не могу понять в чем ошибка.
При отладке выдает "Необработанное исключение типа "System.IndexOutOfRangeException. Дополнительные сведения: Индекс находился вне границ массива." на строчку mass[i, a] = mass[i + 1, a];
Само задание: Из заданной матрицы A(N,M) удалите строку, в которой находится первый
отрицательный элемент.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace lab4 { class Program { static void Main(string[] args) { Console.WriteLine("Введите N"); int n = int.Parse(Console.ReadLine()); Console.WriteLine("Введите M"); int m = int.Parse(Console.ReadLine()); Console.WriteLine("Размер массива - " + n + "x" + m); int[,] mass = new int[n,m]; //Создаём массив размера NxM Console.WriteLine("Введите элементы массива"); for (int i = 0; i < n; i++) //пользователь вводит элементы массива { for (int j = 0; j < m; j++) { mass[i, j] = int.Parse(Console.ReadLine()); } } Console.WriteLine("Ваш массив:"); for (int i = 0; i < n; i++) //вывод массива в виде матрицы { for (int j = 0; j < m; j++) { Console.Write(mass[i, j] + "\t"); } Console.WriteLine(); } Console.ReadKey(); int flag = 0; for (int i = 0; i < n; i++) // удаление строки for (int j = 0; j < m; j++) if (mass[i, j] < 0) // когда находим отрицательный элемент { if (flag == 0) { for (i = 0; i < n; i++) for (int a = 0; a < m; a++) mass[i, a] = mass[i + 1, a]; // присваиваем элементы следующей строки n--;// уменьшаем строки на 1 } flag++; } for (int i = 0; i < n; i++) //вывод измененного массива { for (int j = 0; j < m; j++) { Console.Write(mass[i, j] + "\t"); } Console.WriteLine(); } Console.ReadKey(); } } }
Решение задачи: «Удаление из массива первой строки, в которой есть отрицательный элемент»
textual
Листинг программы
for (int i = 0; i < n; i++) // удаление строки for (int j = 0; j < m; j++) if (mass[i, j] < 0) // когда находим отрицательный элемент { if (flag == 0) { for (i = 0; i < n-1; i++) for (int a = 0; a < m; a++) mass[i, a] = mass[i + 1, a]; // присваиваем элементы следующей строки n--;// уменьшаем строки на 1 } flag++; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д