Удаление всех строк, содержащих минимальный элемент матрицы - C (СИ)

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

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

Доброго времени суток! Написал программу на Си удаления всех строк, содержащих минимальный элемент матрицы, но она падает, если в массиве встречается 0. Не могу понять в чём дело. Помогите, пожалуйста найти ошибку
Листинг программы
  1. #include <stdio.h>
  2. #define N 7
  3. int main()
  4. {
  5. int a[N][N], n, i, j, k, m, min, removed;
  6. while (1)
  7. {
  8. printf("Введите n (1 - %d. Завершить - 0): ", N);
  9. scanf_s("%d", &n);
  10. if (n == 0) break;
  11. if (n < 1 || n > N)
  12. {
  13. printf("Недопустимое значение n\n");
  14. continue;
  15. }
  16. for (i = 0; i < n; i++)
  17. for (j = 0; j < n; j++)
  18. scanf_s("%d", &a[i][j]);
  19. printf("Исходная матрица:\n");
  20. for (i = 0; i < n; i++)
  21. {
  22. for (j = 0; j < n; j++) printf("%d ", a[i][j]);
  23. printf("\n");
  24. }
  25. min = a[0][0];
  26. for (i = 0; i < n; i++)
  27. for (j = 0; j < n; j++)
  28. if (a[i][j] < min) min = a[i][j];
  29. removed = 0;
  30. for (i = 0; i < n; i++)
  31. {
  32. for (j = 0; j < n; j++)
  33. {
  34. if (a[i][j] == min)
  35. {
  36. for (m = i; m < n - removed; m++)
  37. for (k = 0; k < n; k++) a[m][k] = (m < n - removed - 1 ? a[m + 1][k] : 0);
  38. removed++;
  39. i--;
  40. break;
  41. }
  42. }
  43. }
  44. printf("Результат:\n");
  45. if (n - removed == 0) printf("Все строки были удалены, так как они содержали минимальный элемент\n");
  46. else
  47. for (i = 0; i < n - removed; i++)
  48. {
  49. for (j = 0; j < n; j++) printf("%d ", a[i][j]);
  50. printf("\n");
  51. }
  52. }
  53. return 0;
  54. }

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

textual
Листинг программы
  1. for (k = 0; k < n; k++) a[m][k] = (m < n - removed - 1 ? a[m + 1][k] : 0);

Объяснение кода листинга программы

В данном коде выполняется итерация по всем элементам матрицы a. Значение каждой ячейки a[m][k] присваивается значению следующей ячейки a[m + 1][k], если она существует, иначе 0. В данном коде отсутствует проверка выхода за границы матрицы, что может привести к ошибкам при выполнении кода.

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


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

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

14   голосов , оценка 4.071 из 5

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

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

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