Удаление из массива первой строки, в которой есть отрицательный элемент - C#

Узнай цену своей работы

Формулировка задачи:

Помогите, не могу понять в чем ошибка. При отладке выдает "Необработанное исключение типа "System.IndexOutOfRangeException. Дополнительные сведения: Индекс находился вне границ массива." на строчку mass[i, a] = mass[i + 1, a]; Само задание: Из заданной матрицы A(N,M) удалите строку, в которой находится первый отрицательный элемент.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace lab4
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. Console.WriteLine("Введите N");
  13. int n = int.Parse(Console.ReadLine());
  14. Console.WriteLine("Введите M");
  15. int m = int.Parse(Console.ReadLine());
  16. Console.WriteLine("Размер массива - " + n + "x" + m);
  17. int[,] mass = new int[n,m]; //Создаём массив размера NxM
  18. Console.WriteLine("Введите элементы массива");
  19. for (int i = 0; i < n; i++) //пользователь вводит элементы массива
  20. {
  21. for (int j = 0; j < m; j++)
  22. {
  23. mass[i, j] = int.Parse(Console.ReadLine());
  24. }
  25. }
  26. Console.WriteLine("Ваш массив:");
  27. for (int i = 0; i < n; i++) //вывод массива в виде матрицы
  28. {
  29. for (int j = 0; j < m; j++)
  30. {
  31. Console.Write(mass[i, j] + "\t");
  32. }
  33. Console.WriteLine();
  34. }
  35. Console.ReadKey();
  36. int flag = 0;
  37. for (int i = 0; i < n; i++) // удаление строки
  38. for (int j = 0; j < m; j++)
  39. if (mass[i, j] < 0) // когда находим отрицательный элемент
  40. {
  41. if (flag == 0)
  42. {
  43. for (i = 0; i < n; i++)
  44. for (int a = 0; a < m; a++)
  45. mass[i, a] = mass[i + 1, a]; // присваиваем элементы следующей строки
  46. n--;// уменьшаем строки на 1
  47. }
  48. flag++;
  49. }
  50. for (int i = 0; i < n; i++) //вывод измененного массива
  51. {
  52. for (int j = 0; j < m; j++)
  53. {
  54. Console.Write(mass[i, j] + "\t");
  55. }
  56. Console.WriteLine();
  57. }
  58. Console.ReadKey();
  59. }
  60. }
  61. }

Решение задачи: «Удаление из массива первой строки, в которой есть отрицательный элемент»

textual
Листинг программы
  1.           for (int i = 0; i < n; i++) // удаление строки
  2.                 for (int j = 0; j < m; j++)
  3.                     if (mass[i, j] < 0) // когда находим отрицательный элемент
  4.                     {
  5.                         if (flag == 0)
  6.                         {
  7.                             for (i = 0; i < n-1; i++)
  8.                                 for (int a = 0; a < m; a++)
  9.                                     mass[i, a] = mass[i + 1, a]; // присваиваем элементы следующей строки
  10.                             n--;// уменьшаем строки на 1
  11.                         }
  12.                         flag++;
  13.                     }

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


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

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

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы