Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- matr_t matrix_square(matr_t matrix, int *row, int *col)
- {
- if (*row < *col)
- {
- matr_t kek = realloc(matrix, *col * sizeof(arr_t));
- matrix = kek;
- for(int i = *row; i < *col; i++)
- {
- *(matrix + i) = malloc(sizeof(int) * *col);
- }
- *row = *col;
- return matrix;
- }
- else
- {
- int *tmp;
- for(int i = 0; i < *row; i++)
- {
- tmp = realloc(*(matrix + i), sizeof(int) * *row);
- *(matrix + i) = tmp;
- }
- *col = *row;
- return matrix;
- }
- }
- matr_t matrix_size_back(matr_t matrix, int row, int col)
- {
- if (col > row)
- {
- for (int i = row; i < col; i++)
- free(*(matrix + i));
- }
- else
- {
- for (int i = 0; i < col; i++)
- {
- int *tmp;
- tmp = realloc(*(matrix + i), sizeof(int) * row);
- *(matrix + i) = tmp;
- }
- }
- return matrix;
- }
- matr_t matr_transpose(matr_t matrix, int *row, int *col)
- {
- int max = *row > *col? *row: *col;
- int buf;
- int row_init = *row;
- int col_init = *col;
- matrix = matrix_square(matrix, row, col);
- for (int i = 0; i < max; i++)
- for (int j = 0; j < i; j++)
- {
- buf = matrix[i][j];
- matrix[i][j] = matrix[j][i];
- matrix[j][i] = buf;
- }
- *row = col_init;
- *col = row_init;
- matrix = matrix_size_back(matrix, col_init, row_init);
- return matrix;
- }
Add Comment
Please, Sign In to add comment