Помогите, пожалуйста. Нужно написать программу в С++
Оголосіть двовимірний динамічний масив, у якому n x m елементів. Заповніть його довільними числами. - Відсортуйте кожний рядок вихідного масиву за спаданням. - Відсортуйте кожен стовпець вихідного масиву за зростанням. Роздрукуйте його у вигляді таблиці двічі – до та після сортування. Оформіть генерацію, виведення масиву та сортування за допомогою функцій користувача.
Ответы
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
void printArray(int** arr, int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
std::cout << arr[i][j] << "\t";
}
std::cout << std::endl;
}
}
void sortRowsDescending(int** arr, int n, int m) {
for (int i = 0; i < n; i++) {
std::sort(arr[i], arr[i] + m, std::greater<int>());
}
}
void sortColumnsAscending(int** arr, int n, int m) {
for (int j = 0; j < m; j++) {
int* column = new int[n];
for (int i = 0; i < n; i++) {
column[i] = arr[i][j];
}
std::sort(column, column + n);
for (int i = 0; i < n; i++) {
arr[i][j] = column[i];
}
delete[] column;
}
}
int main() {
int n = 4;
int m = 5;
int** arr = new int*[n];
for (int i = 0; i < n; i++) {
arr[i] = new int[m];
}
srand(static_cast<unsigned int>(time(nullptr)));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr[i][j] = rand() % 100;
}
}
std::cout << "Масив до сортування:" << std::endl;
printArray(arr, n, m);
sortRowsDescending(arr, n, m);
sortColumnsAscending(arr, n, m);
std::cout << std::endl << "Масив після сортування:" << std::endl;
printArray(arr, n, m);
for (int i = 0; i < n; i++) {
delete[] arr[i];
}
delete[] arr;
return 0;
}