Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. int sum(int* a, int n)
  7. {
  8. int result = 0;
  9.  
  10. for (int i = 0; i < n; i++)
  11. {
  12. result += a[i];
  13. }
  14.  
  15. return result;
  16. }
  17.  
  18. void SUMRESULT(int** a, int n, int m)
  19. {
  20. for (int i = 0; i < n; i++)
  21. {
  22. for (int j = 0; j < m; j++)
  23. {
  24. cout << a[i][j] << " ";
  25. }
  26. cout << " Сумма строки = " << sum(a[i], m) << endl;
  27. }
  28. cout << endl;
  29. }
  30.  
  31.  
  32. int main()
  33. {
  34. setlocale(LC_ALL, "RUS");
  35.  
  36. int ROW = 0, COL = 0;
  37. cout << "Введите количество строчек в матрице: ";
  38. cin >> ROW;
  39. if (cin.fail() || ROW > 20 || ROW < 2)
  40. {
  41. cout << "Неверная размерность для строк!" << endl;
  42. return -1;
  43. }
  44.  
  45. cout << "Введите количество столбцов в матрице: ";
  46. cin >> COL;
  47. if (cin.fail() || COL > 20 || COL < 2)
  48. {
  49. cout << "Неверная размерность для столбцов!" << endl;
  50. return -2;
  51. }
  52.  
  53. int** MATR = new int* [ROW];
  54.  
  55. for (auto i = 0; i < ROW; i++)
  56. {
  57. MATR[i] = new int[COL];
  58. }
  59.  
  60. for (int i = 0; i < ROW; i++)
  61. {
  62. for (int j = 0; j < COL; j++)
  63. {
  64. MATR[i][j] = 0;
  65. cout << "Введите элемент " << (i + 1) << "-ой строки, " << (j + 1) << "-го столбца: ";
  66. cin >> MATR[i][j];
  67. if (cin.fail())
  68. {
  69. cout << "Вы ввели не число!" << endl;
  70. return -3;
  71. }
  72. }
  73. cout << endl;
  74. }
  75.  
  76. cout << "Введённая матрица:" << endl;
  77. for (int i = 0; i < ROW; i++)
  78. {
  79. for (int j = 0; j < COL; j++)
  80. {
  81. cout << MATR[i][j] << " ";
  82. }
  83. cout << endl;
  84. }
  85. cout << endl;
  86.  
  87.  
  88. /*Перестроить заданную прямоугольную матрицу, переставляя в ней строки так,
  89. чтобы сумма элементов в строках полученной матрицы возрастала*/
  90. for (int i = 0; i < ROW - 1; i++)
  91. {
  92. int maxSum = sum(MATR[i], COL);
  93. int maxPos = i;
  94.  
  95. for (int ii = i + 1; ii < ROW; ii++)
  96. {
  97. int s = sum(MATR[ii], COL);
  98. if (s < maxSum)
  99. {
  100. maxSum = s;
  101. maxPos = ii;
  102. }
  103. }
  104.  
  105. int* t = MATR[i];
  106. MATR[i] = MATR[maxPos];
  107. MATR[maxPos] = t;
  108. }
  109.  
  110. SUMRESULT(MATR, ROW, COL);
  111.  
  112. //- найти в ней номер первого из столбцов, не содержащих отрицательных элементов.
  113. int NUM = 0;
  114. for (int j = 0; j < COL; j++)
  115. {
  116. for (int i = 0; i < ROW; i++)
  117. {
  118. if (MATR[i][j] < 0)
  119. {
  120. break;
  121. }
  122. else
  123. {
  124. NUM++;
  125. if (NUM == ROW)
  126. {
  127. int STLB = j + 1;
  128. cout << "Столбец №" << STLB
  129. << " первый из столбцов, не содержащих отрицательных элементов " << endl;
  130. break;
  131. }
  132. }
  133. }
  134. if (NUM == ROW)
  135. {
  136. break;
  137. }
  138. cout << endl;
  139. }
  140. cout << endl;
  141.  
  142.  
  143. for (int i = 0; i < ROW; i++)
  144. {
  145. delete[] MATR[i];
  146. }
  147.  
  148. delete[] MATR;
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement