Advertisement
Sephinroth

page 79, II, 14

May 21st, 2019
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. //НЕ РАБОТАЕТ!
  2.  
  3. #include <iostream>
  4. #include <string>
  5. #include <fstream>
  6.  
  7. using namespace std;
  8.  
  9. ifstream in("input.txt");
  10. ofstream out("output.txt");
  11.  
  12. void sort(int * a, int n) {
  13.     for (int i = 1; i < n; ++i)
  14.         for (int j = i; j > 0 && a[j - 1] > a[j]; j--)
  15.             swap(a[j], a[j - 1]);
  16. }
  17.  
  18.  
  19. int* Get_Line(int** a, int k, int n)
  20. {
  21.     int SIZE, i, j, ptr = 0;
  22.     if (k < n) {
  23.         SIZE = k + 1;
  24.         i = n - k - 1;
  25.         j = 0;
  26.     }
  27.     else {
  28.         SIZE = 2 * n - 1 - k;
  29.         i = 0;
  30.         j = k - n + 1;
  31.     }
  32.     int* res = new int[SIZE];
  33.     while (i > 0 && j < n)
  34.         res[ptr++] = a[i--][j++];
  35.     return res;
  36. }
  37.  
  38. void Replace(int** a, const int* arr, int k, int n)
  39. {
  40.     int i, j, ptr = 0;
  41.     if (k < n) {
  42.         i = n - k - 1;
  43.         j = 0;
  44.     }
  45.     else {
  46.         i = 0;
  47.         j = k - n + 1;
  48.     }
  49.     while (i > 0 && j < n)
  50.         a[i--][j++] = arr[ptr++];
  51. }
  52.  
  53. int main()
  54. {
  55.     int n;
  56.     in >> n;
  57.  
  58.     int** a = new int*[n];
  59.     for (int i = 0; i < n; ++i)
  60.         a[i] = new int[n];
  61.  
  62.     for (int i = 0; i < n; ++i)
  63.         for (int j = 0; j < n; ++j)
  64.             in >> a[i][j];
  65.     in.close();
  66.     for (int k = 0; k < 2 * n - 1; ++k) {
  67.         int * cur = Get_Line(a, k, n);//ôóíêöèÿ âîçâðàùàåò k-þ äèàãîíàëü ìàòðèöû a
  68.         int SIZE;//ðàçìåð k-é äèàãîíàëè
  69.         if (k < n)
  70.             SIZE = k + 1;
  71.         else
  72.             SIZE = 2 * n - k - 1;
  73.        
  74.         sort(cur, SIZE);//ñîðòèðîâêà
  75.         Replace(a, cur, k, n);//çàìåíÿåò â ìàòðèöå a k-äèàãîíàëü ìàññèâîì cur
  76.         delete[] cur;
  77.  
  78.     }
  79.     for (int i = 0; i < n; ++i, out << '\n')
  80.         for (int j = 0; j < n; ++j, out << ' ')
  81.             out << a[i][j];
  82.     out.close();       
  83.     /*
  84.     ïðèìåð âõîäíîãî ôàéëà
  85.     3
  86.     9 2 3
  87.     8 1 6
  88.     7 4 5
  89.     */
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement