@mpvcluuuuub

Как правильно отсортировать матрицу?

Мне необходимо отсортировать созданную при помощи двумерного динамического массива матрицу так, чтобы сначала шли отрицательные числа, не создавая при этом дополнительной матрицы, M - кол-во стобцов N - кол-во строк, код привел ниже, получается так что отрицательные числа остаются просто в правой части матрицы, я не понимаю в чем проблема5f92ed3099a6a346527538.png
#include <iostream>
#include <ctime>
#include <iomanip> /*iomanip тут просто чтобы красиво было*/

using namespace std;

void main() {
	setlocale(LC_ALL, "Russian");
	srand(time(NULL));

	cout << "Введите количество строк в матрице А: ";
	int N;
	cin >> N;
	cout << "Введите количество столбцов в матрице А: ";
	int M;
	cin >> M;

	int** A = new int* [N];

	for (int i = 0; i < N; i++) {
		A[i] = new int[M];
	}

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			A[i][j] = rand() % 21 - 10;
		}
	}

	cout << "Созданная матрица A" << endl;

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			cout << setw(3) << A[i][j] << " ";
		}
		cout << endl;
	}

	cout << endl;

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			int minusI = i;
			int minusJ = j;
			for (int currentElement = 0; currentElement < M; currentElement++) {
				if (A[i][currentElement] < 0) {
					int temp;
					temp = A[i][currentElement];
					A[i][currentElement] = A[minusI][minusJ];
					A[minusI][minusJ] = temp;
				}
			}
		}
	}

	cout << "Матрица в отсортированном виде: " << endl;

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			cout << setw(3) << A[i][j] << " ";
		}
		cout << endl;
	}

	for (int i = 0; i < N; i++) {
		delete[] A[i];
	}

	delete[] A;
	system("pause");
}
  • Вопрос задан
  • 197 просмотров
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
я не понимаю в чем проблема

а ты объясни, как работает твой алгоритм и зачем там два вложенных цикла по столбцам -- и может поймёшь.
Ответ написан
Ваш ответ на вопрос

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

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