Seal_of_approval

p78e17(2)

Apr 27th, 2015
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 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. int idx;
  38. int key;
  39. for(int i = 0; i < a.size(); i++)
  40. {
  41. idx = i;
  42. key = *a[i];
  43. for(int j = i + 1; j < a.size(); j++)
  44. if ( *a[j] < key)
  45. {
  46. idx = j;
  47. key = *a[j];
  48. }
  49. *a[idx] = *a[i];
  50. *a[i] = key;
  51. }
  52. }
  53.  
  54. void sort_un (vector<int*> &a)
  55. {
  56. int idx;
  57. int key;
  58. for(int i = 0; i < a.size(); i++)
  59. {
  60. idx = i;
  61. key = *a[i];
  62. for(int j = i + 1; j < a.size(); j++)
  63. if ( *a[j] > key)
  64. {
  65. idx = j;
  66. key = *a[j];
  67. }
  68. *a[idx] = *a[i];
  69. *a[i] = key;
  70. }
  71. }
  72.  
  73. int main(void)
  74. {
  75. ifstream inp ("input.txt");
  76. int n;
  77. int **mas = CreateFun <int*,int> (n,inp);
  78. PrintFun <int*> (mas,n);
  79.  
  80.  
  81. for (int k = 0; k <= n; k++)
  82. {
  83. vector<int*> aboveDiagonal;
  84. vector<int*> underDiagonal;
  85.  
  86. for (int i = 0; i < n; i++)
  87. for (int j = 0; j < n; j++)
  88. {
  89. if (i==j-k) aboveDiagonal.push_back(&mas[i][j]);
  90. if (i==j+k) underDiagonal.push_back(&mas[i][j]);
  91. }
  92. if (! (aboveDiagonal.size() == n) && ! (underDiagonal.size() == n))
  93. {
  94. sort_ab(aboveDiagonal);
  95. sort_un(underDiagonal);
  96. }
  97. }
  98. PrintFun <int*> (mas,n);
  99. }
Advertisement
Add Comment
Please, Sign In to add comment