Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <time.h>
  3.  
  4. using namespace std;
  5.  
  6. //Характеристикой строки прямоугольной матрицы называется сумма ее
  7. //положительных элементов.Перестроить заданную матрицу, переставляя в ней
  8. //строки так, чтобы значения их характеристик возрастали.
  9. //- вывести полученную матрицу;
  10. //-найти в ней количество столбцов, не содержащих нулей.
  11.  
  12. int sum(int* a, int m);
  13. void output(int** a, int n, int m);
  14. bool findneg(int** a, int n, int m);
  15.  
  16. int main()
  17. {
  18. srand((unsigned)time(NULL));
  19.  
  20. int n, m;
  21. cout << "Enter bumber of lines = ";
  22. cin >> n;
  23. cout << "Enter number of rows = ";
  24. cin >> m;
  25. cout << endl;
  26.  
  27. if (n > 20 || m > 20 || m < 1 || n < 1)
  28. {
  29. return 1;
  30. }
  31.  
  32. int** a = new int* [n];
  33.  
  34. for (int i = 0; i < n; i++)
  35. {
  36. a[i] = new int[m];
  37. }
  38.  
  39. for (int i = 0; i < n; i++)
  40. {
  41. for (int j = 0; j < m; j++)
  42. {
  43. a[i][j] = (rand() % 11 - 1);
  44. }
  45. }
  46.  
  47. output(a, n, m);
  48. cout << endl;
  49.  
  50. for (int i = 0; i < n - 1; i++)
  51. {
  52. int maxSum = sum(a[i], m);
  53. int maxPos = i;
  54.  
  55. for (int ii = i + 1; ii < n; ii++)
  56. {
  57. int s = sum(a[ii], m);
  58. if (s > maxSum)
  59. {
  60. maxSum = s;
  61. maxPos = ii;
  62. }
  63. }
  64.  
  65. int* t = a[i];
  66. a[i] = a[maxPos];
  67. a[maxPos] = t;
  68. }
  69.  
  70. output(a, n, m);
  71.  
  72. int firstneg = -1;
  73. for (int j = 0; j < m; j++)
  74. {
  75. if (!findneg(a, n, j))
  76. {
  77. firstneg = j;
  78. break;
  79. }
  80. }
  81. cout << endl << endl << firstneg + 1;
  82.  
  83. for (int i = 0; i < n; i++)
  84. {
  85. delete[] a[i];
  86. }
  87.  
  88. delete[] a;
  89. }
  90.  
  91. int sum(int* a, int n)
  92. {
  93. int result = 0;
  94.  
  95. for (int i = 0; i < n; i++)
  96. {
  97. result += a[i];
  98. }
  99.  
  100. return result;
  101. }
  102.  
  103. void output(int** a, int n, int m)
  104. {
  105. for (int i = 0; i < n; i++)
  106. {
  107. for (int j = 0; j < m; j++)
  108. {
  109. cout << a[i][j] << " ";
  110. }
  111. cout << " " << sum(a[i], m) << endl;
  112. }
  113. }
  114.  
  115. bool findneg(int** a, int n, int j)
  116. {
  117. for (int i = 0; i < n; i++)
  118. {
  119. if (a[i][j] < 0)
  120. {
  121. return true;
  122. }
  123. }
  124. return false;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement