Advertisement
Zennoma

dz1.sem2

Mar 31st, 2020
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include<time.h>
  4.  
  5. void matrixgen(int** matrix, int Rows, int Collums)
  6. {
  7. int n = Rows;
  8. int m = Collums;
  9. for (int i = 0; i < n; i++)
  10. {
  11. matrix[i] = new int[m]; // Создаем элементы
  12. }
  13. for (int i = 0; i < n; i++)
  14. for (int j = 0; j < m; j++)
  15. *(*(matrix + i) + j) = rand() % 21 - 10;
  16. }
  17. void matrixprint(int** matrix, int Rows, int Collums)
  18. {
  19. for (int i = 0; i < Rows; i++)
  20. {
  21. for (int j = 0; j < Collums; j++)
  22. printf_s("%6d", *(*(matrix + i) + j));
  23. printf_s("\n");
  24. }
  25. }
  26. void matrixdelete(int** matrix, int Rows)
  27. {
  28. for (int i = 0; i < Rows; i++)
  29. {
  30. delete[]matrix[i]; // Удаляем каждый элемент
  31. }
  32. delete[] matrix; // А потом массив
  33. }
  34. void matrixcopy(int** oldmatrix, int** newmatrix, int Collums, int Rows)
  35. {
  36. int countnegative = 0;
  37. int t = 0;
  38. for (int j = 0; j < Collums; j++)
  39. {
  40. for (int i = 0; i < Rows; i++)
  41. {
  42. if (oldmatrix[i][j] < 0)
  43. countnegative++;
  44. }
  45. if (countnegative < 2)
  46. {
  47. for (int i = 0; i < Rows; i++)
  48. {
  49. newmatrix[i][t] = oldmatrix[i][j];
  50. }
  51. t++;
  52.  
  53. }
  54. countnegative = 0;
  55. }
  56.  
  57.  
  58. }
  59. void reallocnahou(int** matrix, int Rows, int Collums, int &newcollums)
  60. {
  61. int tries = 0;
  62. int mem=1;
  63. newcollums = Collums;
  64. int countnegative = 0;
  65. for (int j = 0; j < Collums; j++)
  66. {
  67. int t = j;
  68. for (int i = 0; i < Rows; i++)
  69. {
  70. if (matrix[i][j] < 0)
  71. countnegative++;
  72. }
  73. if (countnegative >= 2)
  74. {
  75. printf_s("collum %d will be deleted\n", j + 1);
  76. for (int i = 0; i < Rows; i++)
  77. matrix[i][j] = -100;
  78. newcollums--;
  79. }
  80. countnegative = 0;
  81. }
  82.  
  83. for (int j = 0; j < Collums- mem; j++)
  84. if (matrix[0][j] == -100)
  85. {
  86. for (int t = j; t < Collums - 1 ; t++)
  87. {
  88. for (int i = 0; i < Rows; i++)
  89. matrix[i][t] = matrix[i][t + 1];
  90. }
  91. j--;
  92. mem++;
  93. }
  94.  
  95. for (int i = 0; i < Rows; i++)
  96. *(matrix + i) = (int*)realloc(*(matrix + i), newcollums * sizeof(int));
  97. }
  98.  
  99.  
  100. #include <stdlib.h>
  101. #include <stdio.h>
  102. #include<time.h>
  103. #include "beda_s_bashkoy.h"
  104. int main()
  105. {
  106. srand(time(NULL));
  107. int n, m,newcollums;
  108. puts("inputed row number");
  109. scanf_s("%d", &n);
  110. int** array = new int* [n];// Создаем массив указателей
  111. puts("input collums number");
  112. scanf_s("%d", &m);
  113. puts("generated matrix");
  114. matrixgen(array, n, m);
  115. matrixprint(array, n, m);
  116. puts("new matrix");
  117. reallocnahou(array, n, m, newcollums);
  118. matrixprint(array, n, newcollums);
  119. matrixdelete(array, n);
  120. return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement