Задать вопрос
@bunnyyy

Как удалить строку из матрицы?

Нужно удалить из матрицы 6*7 строку, содержащую максимальный элемент.
Вот фрагмент кода:
#define m 7
#define n 6
#define k 6
.....
for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			max = A[0][0];
			if (max < A[i][j])
			{
				max = A[i][j];
				str = i;
			}
		}
	}
	for (int i = str; i < m-1; i++) {
		for (int j = 0; j < k; j++)
		{
			B[i][j] = A[i + 1][j];
		}
	}

Выводит просто обнулённые элементы и странные цифры в последней строке матрицы.. Что я делаю не так?
  • Вопрос задан
  • 2443 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
max = A[0][0]; должно быть вне циклов, ищущих максимум.
B[i][j] = A[i + 1][j]; - откуда взялось B?
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
В полном коде:

for (int i = str; i < m-1; i++) {
    for (int j = 0; j <= n; j++)
    {
      B[i][j] = A[i + 1][j];
    }
  }

все строки B до str остались неинициализированными. В цикле по j условие неверно, должно быть j < n

В последнем цикле
for (int i = 0; i < m; i++)
неверно, должно быть i < m - 1

k стоит выкинуть из кода и заменить на m - 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы