Удаление из массива первой строки, в которой есть отрицательный элемент - 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++;
                    }

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


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

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

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