Как транспонировать прямоугольную матрицу?

Чтобы транспонировать прямоугольную матрицу, необходимо поменять местами элементы матрицы относительно её главной диагонали. Главная диагональ - это линия, содержащая элементы, у которых номер строки равен номеру столбца.

Для решения этой задачи можно использовать различные методы, включая тривиальные и эффективные алгоритмы. Наиболее простой и понятный способ - это создать новую матрицу, где строки первоначальной матрицы будут столбцами новой матрицы, и наоборот.

Приведу пример, демонстрирующий, как транспонировать матрицу размером MxN:

#include <stdio.h>

#define MAX_SIZE 100

void transposeMatrix(int matrix[MAX_SIZE][MAX_SIZE], int rows, int columns) {
  int i, j;
  int transposed[MAX_SIZE][MAX_SIZE];

  // Перебираем элементы первоначальной матрицы и помещаем их на новые позиции
  for (i = 0; i < rows; i++) {
    for (j = 0; j < columns; j++) {
      transposed[j][i] = matrix[i][j];
    }
  }

  // Выводим на экран транспонированную матрицу
  printf("Транспонированная матрица:n");
  for (i = 0; i < columns; i++) {
    for (j = 0; j < rows; j++) {
      printf("%d ", transposed[i][j]);
    }
    printf("n");
  }
}

int main() {
  int matrix[MAX_SIZE][MAX_SIZE];
  int rows, columns, i, j;

  printf("Введите количество строк матрицы: ");
  scanf("%d", &rows);
  printf("Введите количество столбцов матрицы: ");
  scanf("%d", &columns);

  printf("Введите элементы матрицы:n");
  for (i = 0; i < rows; i++) {
    for (j = 0; j < columns; j++) {
      scanf("%d", &matrix[i][j]);
    }
  }

  transposeMatrix(matrix, rows, columns);

  return 0;
}

Программа запрашивает у пользователя размеры матрицы (количество строк и столбцов) и элементы матрицы. Затем она использует функцию transposeMatrix для транспонирования матрицы и вывода результата на экран.

Таким образом, приведенная программа позволяет транспонировать прямоугольную матрицу и выводит результат на экран. Вы можете использовать этот код в своей программе или изменить его в соответствии с вашими потребностями.