• Предмет: Информатика
  • Автор: grabovasofia139
  • Вопрос задан 4 месяца назад

Помогите, пожалуйста. Нужно написать программу в С++
Оголосіть двовимірний динамічний масив, у якому n x m елементів. Заповніть його довільними числами. - Відсортуйте кожний рядок вихідного масиву за спаданням. - Відсортуйте кожен стовпець вихідного масиву за зростанням. Роздрукуйте його у вигляді таблиці двічі – до та після сортування. Оформіть генерацію, виведення масиву та сортування за допомогою функцій користувача.​

Ответы

Ответ дал: asilvejstruk
0

#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;

}

Вас заинтересует