Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <time.h>
- const int M = 6;//cтолбы
- void init_static_matrix(int A[][M],int n);//меняем колво строк
- void print_static_matrix(int A[][M], int n);
- void init_dynamic_matrix(int** B,int n, int m);
- void print_dynamic_matrix(int** B,int n, int m);
- void trans(int A[M][M]);
- void init_linedynamic_matrix(int* C, int n, int m);
- void print_linedynamic_matrix(int* C, int n, int m);
- void swap(void* a, void* b, int size);
- void swap_rows_static(int A[][M],int r1,int r2);
- void swap_rows_dynamic(int** B,int r1,int r2);
- void swap_cols_static(int A[][M], int n, int c1,int c2);
- void swap_cols_dynamic(int** B, int n, int c1, int c2);
- int main()
- {
- srand(time(NULL));
- const int N = 5;
- int A[N][M];
- init_static_matrix(A, N);
- print_static_matrix(A, N);
- swap_cols_static(A,N, 1, 3);
- print_static_matrix(A, N);
- int** B = (int**)malloc(sizeof(int*)*N);//меняем с void* на int** //внешний массив
- for (int i = 0; i < N; i++)
- {
- B[i] =(int*) malloc(sizeof(int)*M);//внутренние массивы
- }
- init_dynamic_matrix(B,N,M);
- print_dynamic_matrix(B, N, M);
- swap_cols_dynamic(B,N, 1, 3);
- print_dynamic_matrix(B, N, M);
- for (int i = 0; i < N; i++)
- {
- free(B[i]);
- }
- free(B);//не будет использоваться память , будет записывать сверху них
- int* C = (int*)malloc(N*M * sizeof(int));
- init_linedynamic_matrix(C, N, M);
- print_linedynamic_matrix(C, N, M);
- free(C);
- int D[M][M];
- init_static_matrix(D,M);
- print_static_matrix(D, N);
- trans(D);
- print_static_matrix(D, M);
- return 0;
- }
- void init_static_matrix(int A[][M], int n)
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < M; j++)
- {
- A[i][j] = rand() % 100;
- }
- }
- return;
- }
- void print_static_matrix(int A[][M], int n)
- {
- printf("\nstatic matrix\n");
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < M; j++)
- {
- printf("%3d", A[i][j]);
- }
- printf("\n");
- }
- return;
- }
- void init_dynamic_matrix(int** B, int n, int m)
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- B[i][j] = rand() % 100;
- }
- }
- return;
- }
- void print_dynamic_matrix(int** B, int n, int m)
- {
- printf("\ndynamic matrix:\n");
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- printf("%3d", B[i][j]);
- }
- printf("\n");
- }
- return;
- }
- void init_linedynamic_matrix(int* C, int n, int m)
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- C[i*m+j] = rand() % 100;
- }
- }
- return;
- }
- void print_linedynamic_matrix(int* C, int n, int m)
- {
- printf("\nline matrix:\n");
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- printf("%3d", C[i*m+j]);
- }
- printf("\n");
- }
- return;
- }
- void swap(void* a, void* b,int size)//для того чтобы работал со всеми типами данных
- {
- void* temp=malloc(size);
- memcpy(temp, a, size);
- memcpy(a, b, size);
- memcpy(b, temp, size);
- free(temp);
- return;
- }
- void swap_rows_static(int A[][M], int r1, int r2)
- {
- swap(A+r1,A+r2,sizeof(int)*M);
- return;
- }
- void swap_rows_dynamic(int** B, int r1, int r2)
- {
- swap(B + r1, B + r2, sizeof(int*));
- return;
- }
- void swap_cols_static(int A[][M], int n, int c1, int c2)
- {
- for (int i=0; i < n; i++)
- {
- swap(&A[i][c1], &A[i][c2], sizeof(int));
- }
- return;
- }
- void swap_cols_dynamic(int** B, int n, int c1, int c2)
- {
- for (int i=0; i < n; i++)
- {
- swap(&B[i][c1], &B[i][c2], sizeof(int));
- }
- return;
- }
- void trans(int A[M][M])
- {
- for (int i = 0; i < M; i++)
- {
- for (int j = i+1; j < M; j++)
- {
- swap(&A[i][j], &A[j][i], sizeof(int));
- }
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement