fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. void printMatrix(const vector<vector<int>>& matrix) {
  8. for (const vector<int>& row : matrix) {
  9. for (int element : row) {
  10. cout << element << " ";
  11. }
  12. cout << endl;
  13. }
  14. }
  15.  
  16. void sortAboveMainDiagonal(vector<vector<int>>& matrix) {
  17. int n = matrix.size();
  18.  
  19. // Проходим по строкам матрицы, начиная со второй.
  20. for (int row = 1; row < n; ++row) {
  21. // Выделяем элементы, расположенные над главной диагональю.
  22. vector<int> subdiagonal(row + 1);
  23. for (int col = 0; col <= row; ++col) {
  24. subdiagonal[col] = matrix[row - col][col];
  25. }
  26.  
  27. // Сортируем элементы выделенного поддиагонального вектора.
  28. sort(subdiagonal.begin(), subdiagonal.end());
  29.  
  30. // Располагаем отсортированные элементы обратно в матрицу.
  31. for (int col = 0; col <= row; ++col) {
  32. matrix[row - col][col] = subdiagonal[col];
  33. }
  34. }
  35. }
  36.  
  37. int main() {
  38. // Задаем тестовый массив
  39. vector<vector<int>> matrix = {
  40. {1, 3, 7},
  41. {2, 5, 6},
  42. {4, 8, 9},
  43. };
  44.  
  45. // Выводим исходный массив
  46. cout << "Исходный массив:" << endl;
  47. printMatrix(matrix);
  48.  
  49. // Сортируем элементы над главной диагональю
  50. sortAboveMainDiagonal(matrix);
  51.  
  52. // Выводим отсортированный массив
  53. cout << "\nОтсортированный массив:" << endl;
  54. printMatrix(matrix);
  55.  
  56. return 0;
  57. }
Success #stdin #stdout 0.01s 5304KB
stdin
1 6 5 
3 7 4
9 2 8
stdout
Исходный массив:
1 3 7 
2 5 6 
4 8 9 

Отсортированный массив:
1 3 7 
2 5 6 
4 8 9