Answer the question
In order to leave comments, you need to log in
How to sort a matrix?
I need to sort the matrix created using a two-dimensional dynamic array so that negative numbers go first, without creating an additional matrix, M is the number of columns N is the number of rows, the code is given below, it turns out that negative numbers simply remain in the right side of the matrix, I don't understand what the problem is
#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");
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question