Advertisement
Seal_of_approval

p78e17(1)

Apr 6th, 2015
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <fstream>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. template < typename create, typename create1 >
  9. create* CreateFun (int &n, ifstream &inp)
  10. {
  11. inp >> n;
  12. create *mas = new create [n];
  13. for (int i = 0; i < n; i++)
  14. {
  15. mas[i] = new create1 [n];
  16. for ( int j = 0; j < n; j++)
  17. inp >> mas[i][j];
  18. }
  19. return mas;
  20. }
  21.  
  22. template < typename print >
  23. void PrintFun (print *mas, int &n)
  24. {
  25. for (int i = 0; i < n; i++)
  26. {
  27. for ( int j = 0; j < n; j++)
  28. cout << mas[i][j] << " ";
  29. cout << endl;
  30. }
  31. cout << endl;
  32. }
  33.  
  34.  
  35. void sort_ab (vector<int*> &a)
  36. {
  37. for (int i = 0; i < a.size(); i++)
  38. {
  39. int j = i;
  40. while (j > 0 && *a[j] < *a[j-1])
  41. {
  42. swap (*a[j], *a[j-1]);
  43. j--;
  44. }
  45. }
  46. }
  47.  
  48. void sort_un (vector<int*> &a)
  49. {
  50. for (int i = 0; i < a.size(); i++)
  51. {
  52. int j = i;
  53. while (j > 0 && *a[j] > *a[j-1])
  54. {
  55. swap (*a[j], *a[j-1]);
  56. j--;
  57. }
  58. }
  59. }
  60.  
  61. int main(void)
  62. {
  63. ifstream inp ("input.txt");
  64. int n;
  65. int **mas = CreateFun <int*,int> (n,inp);
  66. PrintFun <int*> (mas,n);
  67.  
  68.  
  69. for (int k = 0; k <= n; k++)
  70. {
  71. vector<int*> aboveDiagonal;
  72. vector<int*> underDiagonal;
  73.  
  74. for (int i = 0; i < n; i++)
  75. for (int j = 0; j < n; j++)
  76. {
  77. if (i==j-k) aboveDiagonal.push_back(&mas[i][j]);
  78. if (i==j+k) underDiagonal.push_back(&mas[i][j]);
  79. }
  80. if (! (aboveDiagonal.size() == n) && ! (underDiagonal.size() == n))
  81. {
  82. sort_ab(aboveDiagonal);
  83. sort_un(underDiagonal);
  84. }
  85. }
  86. PrintFun <int*> (mas,n);
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement