Guest User

Untitled

a guest
Dec 13th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <time.h>
  3. #define N 5
  4. using namespace std;
  5.  
  6. int main() {
  7.  
  8. setlocale(LC_ALL, "Russian");
  9.  
  10. int ctarr[N][N], helper[N], repl, method;
  11. srand(time(0));
  12.  
  13. cout << "Как желаете заполнить массив?n1. Вручнуюn2. С помощью случайных чиселn";
  14. cin >> method;
  15. switch (method) {
  16. case 1:
  17. for (int i = 0; i < N; i++) {
  18. for (int j = 0; j < N; j++) {
  19. cout << "Введите " << j + 1 << "-й элемент " << i + 1 << "-й строки: ";
  20. cin >> ctarr[i][j];
  21. }
  22. }
  23. break;
  24. case 2:
  25. for (int i = 0; i < N; i++) {
  26. for (int j = 0; j < N; j++) {
  27. ctarr[i][j] = rand();
  28. }
  29. }
  30. break;
  31. default: break;
  32. }
  33.  
  34. cout << "nИсходный массив:n";
  35.  
  36. for (int i = 0; i < N; i++) {
  37. for (int j = 0; j < N; j++) {
  38. cout << ctarr[i][j] << "t";
  39. }
  40. cout << endl;
  41. }
  42.  
  43. cout << "nКакую строку переставить? ";
  44. cin >> repl;
  45. repl--;
  46.  
  47. for (int i = 0; i < N; i++) {
  48. helper[i] = ctarr[repl][i];
  49. }
  50.  
  51. for (int i = repl; i > 0; i--) {
  52. for (int j = 0; j < N; j++) {
  53. ctarr[i][j] = ctarr[i - 1][j];
  54. }
  55. }
  56.  
  57. for (int i = 0; i < N; i++) {
  58. ctarr[0][i] = helper[i];
  59. }
  60.  
  61. cout << "nnПолученный массивnn";
  62.  
  63. for (int i = 0; i < N; i++) {
  64. for (int j = 0; j < N; j++) {
  65. cout << ctarr[i][j] << "t";
  66. }
  67. cout << endl;
  68. }
  69.  
  70. system("pause");
  71. return 0;
  72. }
  73.  
  74. const int N = 5;
  75.  
  76. int** createMatr(int rows, int columns) {
  77. // массив указателей, которые будут ссылаться на начало строк
  78. int **m = new int*[rows];
  79. // сама матрица будет одномерным массивом
  80. m[0] = new int[rows*columns];
  81. // размечаем начало строк
  82. for (int i = 1; i < rows; i++) {
  83. m[i] = m[i - 1] + columns;
  84. }
  85. return m;
  86. }
  87.  
  88. void deleteMatr(int **m) {
  89. // удаляем массив для матрицы
  90. delete[] m[0];
  91. // удаляем массив для указателей на строки
  92. delete[] m;
  93. }
  94.  
  95. int main() {
  96. int **ctarr = createMatr(N, N);
  97. int *helper = new int[N];
  98. /* остальной код без изменений */
  99. deleteMatr(ctarr);
  100. delete[] helper;
  101. return 0;
  102. }
Add Comment
Please, Sign In to add comment