Написать функцию, которая транспонирует квадратную матрицу - C (СИ)
Формулировка задачи:
Написать функцию, которая транспонирует квадратную матрицу.Входной параметр матрица
На си.
Решение задачи: «Написать функцию, которая транспонирует квадратную матрицу»
textual
Листинг программы
#include <stdio.h>
//Написать функцию, которая транспонирует квадратную матрицу.Входной параметр матрица
const int N = 5;
const int M = 5;
void transpose_matrix(int A[N][M])
{
int i, j, x;
for(i = 0; i < N; i++){
for(j = i; j < M ; j++){
if(i != j){
x = A[i][j];
A[i][j] = A[j][i];
A[j][i] = x;
}
}
}
}
int main()
{
int i, j, A[5][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
for(i = 0; i < N; i++){//вывод исходной матрицы на экран просто для наглядности,если этого не
for(j = 0; j < M; j++)//требуется-удалите строки 21-27
printf("%3d", A[i][j]);
printf("\n");
}
printf("\n\n");
transpose_matrix(A);
for(i = 0; i < N; i++){
for(j = 0; j < M; j++)
printf("%3d", A[i][j]);
printf("\n");
}
return 0;
}
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций ввода-вывода
- Задаем константы N и M, которые определяют размерность матрицы
- Объявляем функцию transpose_matrix, которая будет транспонировать матрицу
- Внутри функции объявляем переменные i, j, x, которые будут использоваться в цикле
- Используем два вложенных цикла для прохода по всем элементам матрицы. Внешний цикл идет по строкам, внутренний - по столбцам
- Внутренний цикл проверяет, не является ли текущий элемент диагональным элементом (если i=j, то элементы обнуляются)
- Если условие выполняется, то текущий элемент присваивается переменной x, а затем элементы A[i][j] и A[j][i] заменяются на x
- В функции main создаем массив A[5][5] и инициализируем его значениями для наглядности
- Выводим исходную матрицу на экран с помощью двух вложенных циклов и функции printf
- Вызываем функцию transpose_matrix для транспонирования матрицы
- Выводим транспонированную матрицу на экран с помощью двух вложенных циклов и функции printf
- Возвращаем 0 из функции main, чтобы указать, что программа успешно завершилась