Advertisement
SergeyLord

Untitled

Nov 29th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.25 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <time.h>
  4.  
  5. const int M = 6;//cтолбы
  6. void init_static_matrix(int A[][M],int n);//меняем колво  строк
  7. void print_static_matrix(int A[][M], int n);
  8.  
  9. void init_dynamic_matrix(int** B,int n, int m);
  10. void print_dynamic_matrix(int** B,int n, int m);
  11. void trans(int A[M][M]);
  12.  
  13. void init_linedynamic_matrix(int* C, int n, int m);
  14. void print_linedynamic_matrix(int* C, int n, int m);
  15.  
  16. void swap(void* a, void* b, int size);
  17.  
  18. void swap_rows_static(int A[][M],int r1,int r2);
  19. void swap_rows_dynamic(int** B,int r1,int r2);
  20. void swap_cols_static(int A[][M], int n, int c1,int c2);
  21. void swap_cols_dynamic(int** B, int n, int c1, int c2);
  22.  
  23. int main()
  24. {
  25.     srand(time(NULL));
  26.     const int N = 5;
  27.  
  28.     int A[N][M];
  29.    
  30.     init_static_matrix(A, N);
  31.     print_static_matrix(A, N);
  32.     swap_cols_static(A,N, 1, 3);
  33.     print_static_matrix(A, N);
  34.  
  35.     int** B = (int**)malloc(sizeof(int*)*N);//меняем с void* на int**  //внешний массив
  36.     for (int i = 0; i < N; i++)
  37.     {
  38.         B[i] =(int*) malloc(sizeof(int)*M);//внутренние массивы
  39.     }
  40.  
  41.     init_dynamic_matrix(B,N,M);
  42.     print_dynamic_matrix(B, N, M);
  43.     swap_cols_dynamic(B,N, 1, 3);
  44.     print_dynamic_matrix(B, N, M);
  45.  
  46.     for (int i = 0; i < N; i++)
  47.     {
  48.         free(B[i]);
  49.  
  50.     }
  51.     free(B);//не будет использоваться память , будет записывать сверху них
  52.  
  53.     int* C = (int*)malloc(N*M * sizeof(int));
  54.     init_linedynamic_matrix(C, N, M);
  55.     print_linedynamic_matrix(C, N, M);
  56.     free(C);
  57.  
  58.     int D[M][M];
  59.     init_static_matrix(D,M);
  60.     print_static_matrix(D, N);
  61.     trans(D);
  62.     print_static_matrix(D, M);
  63. return 0;
  64. }
  65.  
  66. void init_static_matrix(int A[][M], int n)
  67. {
  68.     for (int i = 0; i < n; i++)
  69.     {
  70.         for (int j = 0; j < M; j++)
  71.         {
  72.             A[i][j] = rand() % 100;
  73.  
  74.         }
  75.  
  76.     }
  77.     return;
  78.  
  79. }
  80. void print_static_matrix(int A[][M], int n)
  81. {
  82.     printf("\nstatic matrix\n");
  83.     for (int i = 0; i < n; i++)
  84.     {
  85.         for (int j = 0; j < M; j++)
  86.         {
  87.             printf("%3d", A[i][j]);
  88.  
  89.         }
  90.         printf("\n");
  91.     }
  92.     return;
  93. }
  94.  
  95. void init_dynamic_matrix(int** B, int n, int m)
  96. {
  97.     for (int i = 0; i < n; i++)
  98.     {
  99.         for (int j = 0; j < m; j++)
  100.         {
  101.             B[i][j] = rand() % 100;
  102.  
  103.         }
  104.  
  105.     }
  106.     return;
  107. }
  108. void print_dynamic_matrix(int** B, int n, int m)
  109. {
  110.     printf("\ndynamic matrix:\n");
  111.     for (int i = 0; i < n; i++)
  112.     {
  113.         for (int j = 0; j < m; j++)
  114.         {
  115.             printf("%3d", B[i][j]);
  116.  
  117.         }
  118.         printf("\n");
  119.     }
  120.     return;
  121. }
  122.  
  123. void init_linedynamic_matrix(int* C, int n, int m)
  124. {
  125.     for (int i = 0; i < n; i++)
  126.     {
  127.         for (int j = 0; j < m; j++)
  128.         {
  129.             C[i*m+j] = rand() % 100;
  130.  
  131.         }
  132.  
  133.     }
  134.     return;
  135. }
  136.  
  137. void print_linedynamic_matrix(int* C, int n, int m)
  138. {
  139.     printf("\nline matrix:\n");
  140.     for (int i = 0; i < n; i++)
  141.     {
  142.         for (int j = 0; j < m; j++)
  143.         {
  144.             printf("%3d", C[i*m+j]);
  145.  
  146.         }
  147.         printf("\n");
  148.     }
  149.     return;
  150. }
  151.  
  152. void swap(void* a, void* b,int size)//для того чтобы работал со всеми типами данных
  153. {
  154.     void* temp=malloc(size);
  155.     memcpy(temp, a, size);
  156.     memcpy(a, b, size);
  157.     memcpy(b, temp, size);
  158.     free(temp);
  159.     return;
  160.  
  161. }
  162.  
  163. void swap_rows_static(int A[][M], int r1, int r2)
  164. {
  165.     swap(A+r1,A+r2,sizeof(int)*M);
  166.     return;
  167. }
  168.  
  169. void swap_rows_dynamic(int** B, int r1, int r2)
  170. {
  171.     swap(B + r1, B + r2, sizeof(int*));
  172.     return;
  173. }
  174.  
  175. void swap_cols_static(int A[][M], int n, int c1, int c2)
  176. {
  177.     for (int i=0; i < n; i++)
  178.     {
  179.         swap(&A[i][c1], &A[i][c2], sizeof(int));
  180.        
  181.     }
  182.     return;
  183. }
  184. void swap_cols_dynamic(int** B, int n, int c1, int c2)
  185. {
  186.     for (int i=0; i < n; i++)
  187.     {
  188.         swap(&B[i][c1], &B[i][c2], sizeof(int));
  189.  
  190.     }
  191.     return;
  192.  
  193. }
  194.  
  195. void trans(int A[M][M])
  196. {
  197.     for (int i = 0; i < M; i++)
  198.     {
  199.         for (int j = i+1; j < M; j++)
  200.         {
  201.             swap(&A[i][j], &A[j][i], sizeof(int));
  202.         }
  203.     }
  204.     return;
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement