Удаление всех строк, содержащих минимальный элемент матрицы - C (СИ)
Формулировка задачи:
Доброго времени суток!
Написал программу на Си удаления всех строк, содержащих минимальный элемент матрицы,
но она падает, если в массиве встречается 0.
Не могу понять в чём дело. Помогите, пожалуйста найти ошибку
Листинг программы
- #include <stdio.h>
- #define N 7
- int main()
- {
- int a[N][N], n, i, j, k, m, min, removed;
- while (1)
- {
- printf("Введите n (1 - %d. Завершить - 0): ", N);
- scanf_s("%d", &n);
- if (n == 0) break;
- if (n < 1 || n > N)
- {
- printf("Недопустимое значение n\n");
- continue;
- }
- for (i = 0; i < n; i++)
- for (j = 0; j < n; j++)
- scanf_s("%d", &a[i][j]);
- printf("Исходная матрица:\n");
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++) printf("%d ", a[i][j]);
- printf("\n");
- }
- min = a[0][0];
- for (i = 0; i < n; i++)
- for (j = 0; j < n; j++)
- if (a[i][j] < min) min = a[i][j];
- removed = 0;
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- if (a[i][j] == min)
- {
- for (m = i; m < n - removed; m++)
- for (k = 0; k < n; k++) a[m][k] = (m < n - removed - 1 ? a[m + 1][k] : 0);
- removed++;
- i--;
- break;
- }
- }
- }
- printf("Результат:\n");
- if (n - removed == 0) printf("Все строки были удалены, так как они содержали минимальный элемент\n");
- else
- for (i = 0; i < n - removed; i++)
- {
- for (j = 0; j < n; j++) printf("%d ", a[i][j]);
- printf("\n");
- }
- }
- return 0;
- }
Решение задачи: «Удаление всех строк, содержащих минимальный элемент матрицы»
textual
Листинг программы
- 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.
В данном коде отсутствует проверка выхода за границы матрицы, что может привести к ошибкам при выполнении кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д