Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <cstdlib>
  3.  
  4. int main() {
  5. int N, M;
  6. int array[100][100];
  7. do { // объявление размерности массива
  8. printf("Enter N\n");
  9. scanf_s("%d", &N);
  10. printf("Enter M\n");
  11. scanf_s("%d", &M);
  12. if (N >= 100 || M >= 100 || N <= 0 || M <= 0) { // проверка на размерность(не допускаем определение массива с нулевой размерностью и больше 100*100)
  13. printf("Values are not valid. Try again\n");
  14. }
  15. } while (N >= 100 || M >= 100 || N <= 0 || M <= 0); // если проверку не проходит, снова запрашивает N M на ввод
  16.  
  17. for (int i = 0; i < N; i++) { // определение каждого элемента массива
  18. for (int j = 0; j < M; j++) {
  19. printf("Enter element with index [%d][%d]: ", i, j);
  20. scanf_s("%d", &array[i][j]);
  21. }
  22. }
  23.  
  24. bool isFound = false; // булевая переменная(логический оператор, может принимать значение только true / false)
  25. for (int j = 0; j < M; j++) { // по заданию нужно искать нули в столбцах, значит здесь j
  26. int countOfNotNegative = 0; // обнуление переменной-счетчика, которая будет считать кол-во положительных эл-тов в столбце
  27. for (int i = 0; i < N; i++) { // ходим по столбцу..
  28. if (array[i][j] > 0) { // надеюсь здесь все понятно))))))
  29. countOfNotNegative++;
  30. }
  31. }
  32. if (countOfNotNegative == N) { // если все элементы столбца положительные...
  33. isFound = true; // столбец найден - значит true
  34. printf("Number of colomn is %d\n", j);
  35. break; // выход из цикла, т.к. столбец по условию мы уже нашли
  36. }
  37. }
  38. if (isFound == false) { // если же переменная осталась false, т.е. таковых столбцов нет в массиве, то выводим сообщение об этом
  39. printf("There are no colomns without negative numbers\n");
  40. }
  41.  
  42.  
  43. printf("Array :\n"); // вывод массива
  44. int newArray[100][100]; // создаем новый массив для того, чтобы отсортировать строки по умолчанию, и потом отсортируем его по возрастанию
  45. // ну смотри тебе нужно посчитать кол-во повторяющихся элементов в этом массиве: 5 4 3 4 3 5. Для того, чтобы посчитать кол-во повторяющихся отсортируем
  46. // получим 3 3 4 4 5 5. потом сравниваем a[0] == a[0+1](т.е. следующий), если да то k++, k - кол-во повторов, так у нас k будет равно 3.
  47. for (int i = 0; i < N; i++) {
  48. for (int j = 0; j < M; j++) {
  49. printf("%d ", array[i][j]);
  50. newArray[i][j] = array[i][j];
  51. }
  52. printf("\n");
  53. }
  54.  
  55. for (int i = 0; i < N; i++) { // сортировка каждой строки по возрастанию(bubble sort) посмотри в инете что это такое
  56. for (int j = 0; j < M; j++) {
  57. for (int k = 0; k < M - j - 1; k++) {
  58. if (array[i][k] > array[i][k + 1]) {
  59. int tmp = array[i][k];
  60. array[i][k] = array[i][k + 1];
  61. array[i][k + 1] = tmp;
  62. }
  63. }
  64. }
  65. }
  66.  
  67. for (int i = 0; i < N - 1; i++) {
  68. for (int j = i + 1; j < N; j++) {
  69. int countOfRepeating1 = 0, countOfReapiting2 = 0;
  70. for (int k = 0; k < M - 1; k++) {
  71. if (array[i][k] == array[i][k + 1]) {
  72. countOfRepeating1++;
  73. }
  74. if (array[j][k] == array[j][k + 1]) {
  75. countOfReapiting2++;
  76. }
  77. }
  78. if (countOfRepeating1 > countOfReapiting2) {
  79. for (int k = 0; k < M; k++) {
  80. int tmp = array[i][k];
  81. array[i][k] = array[j][k];
  82. array[j][k] = tmp;
  83. tmp = newArray[i][k];
  84. newArray[i][k] = newArray[j][k];
  85. newArray[j][k] = tmp;
  86. }
  87. }
  88. }
  89. }
  90.  
  91. printf("Final array:\n"); // вывод массива
  92. for (int i = 0; i < N; i++) {
  93. for (int j = 0; j < M; j++) {
  94. printf("%d ", newArray[i][j]);
  95. }
  96. printf("\n");
  97. }
  98.  
  99. system("pause");
  100. return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement