Advertisement
al3taibi

Untitled

May 16th, 2022
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6.  
  7.  
  8. template<typename Type>
  9. void sums(Type **array, int N, int M) {
  10. int i, k, j;
  11. vector<vector<Type>> sums;
  12.  
  13. for (k = 0; k < M; k++) {
  14.  
  15. bool add = false;
  16. Type sum = 0;
  17.  
  18. for (i = 0; i < N; i++) {
  19.  
  20. if (array[i][k] < 0) {
  21.  
  22. add = true;
  23.  
  24. for (j = 0; j < N; j++) {
  25. sum += array[j][k];
  26. }
  27.  
  28. break;
  29. }
  30. }
  31.  
  32. if(add)
  33. {
  34. vector<Type> temp;
  35. temp.push_back(k + 1);
  36. temp.push_back(sum);
  37. sums.push_back(temp);
  38. }
  39. }
  40.  
  41. for(i = 0; i < 2; i ++)
  42. {
  43. for(j = 0; j < sums.size(); j++)
  44. {
  45. cout << sums[j][i];
  46.  
  47. if(j != sums.size() - 1) cout << ' ';
  48. }
  49. cout << endl;
  50. }
  51. }
  52.  
  53. template<typename Type>
  54. void firstN(Type **array, int N, int M) {
  55. int i, k;
  56. Type characteristics[M][2], sum;
  57.  
  58. for (k = 0; k < M; k++) {
  59. sum = 0;
  60. for (i = 1; i < N; i += 2) {
  61. if (array[i][k] < 0) sum += abs(array[i][k]);
  62. }
  63. characteristics[k][0] = k;
  64. characteristics[k][1] = sum;
  65. }
  66.  
  67. for (i = 1; i < M; i++)
  68. for (k = 0; k < M - i; k++)
  69. if (characteristics[k][1] > characteristics[k + 1][1])
  70. swap(characteristics[k], characteristics[k + 1]);
  71.  
  72. auto **result = new Type*[N];
  73. for (i = 0; i < N; i++)
  74. {
  75. result[i] = new Type[M];
  76. }
  77.  
  78.  
  79. for (i = 0; i < N; i++) {
  80. for (k = 0; k < M; k++) {
  81. result[i][k] = array[i][(int)characteristics[k][0]];
  82. cout << result[i][k];
  83. if (k != M - 1) cout << ' ';
  84. }
  85. cout << endl;
  86. }
  87.  
  88. sums(result, N, M);
  89. }
  90.  
  91. template<typename Type>
  92. void process(Type **array, int N, int M)
  93. {
  94. int i, k;
  95.  
  96. for (i = 0; i < N; i++)
  97. {
  98. array[i] = new Type[M];
  99. }
  100.  
  101. for(i = 0; i < N; i++){
  102. for(k = 0; k < M; k++){
  103. cin >> array[i][k];
  104. }
  105. }
  106.  
  107. firstN(array, N, M);
  108. }
  109.  
  110. int main() {
  111. int N, M;
  112. cin >> N;
  113. cin >> M;
  114.  
  115. auto **array = new int* [N];
  116. auto **arrayDouble = new double* [N];
  117. auto **arrayFloat = new float* [N];
  118.  
  119. process(array, N, M);
  120. process(arrayDouble, N, M);
  121. process(arrayFloat, N, M);
  122. }
  123.  
  124.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement