Транспонирование матрицы - C (СИ) (71022)
Формулировка задачи:
Помогите на чистом си)
Транспонироватьь матрицу
Например:
А=
1 2 4
0 9 5
8 6 3
Должна получится матрица B =
1 0 8
2 9 6
4 5 3
Решение задачи: «Транспонирование матрицы»
textual
Листинг программы
#include <stdio.h>
void print_matrix(int (*arr)[], int size);
void transpose_matrix(int (*arr1)[], int (*arr2)[], int size);
int main(void)
{
int A[3][3]={{1,2,4},{0,9,5},{8,6,3}};
int B[3][3];
print_matrix(A, 3);
printf("\n");
transpose_matrix(A, B, 3);
print_matrix(B, 3);
printf("\n");
}
void print_matrix(int (*arr)[], int size) {
int (*arrPtr)[size] = arr;
int i, j;
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++)
printf("%d ", (*arrPtr)[j]);
arrPtr++;
printf("\n");
}
}
void transpose_matrix(int (*arr1)[], int (*arr2)[], int size) {
int (*arrPtr1)[size] = arr1;
int (*arrPtr2)[size] = arr2;
int i, j;
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++)
arrPtr2[j][i] = arrPtr1[i][j];
}
}
Объяснение кода листинга программы
Вот что происходит в этом коде:
- Создается матрица A размером 3x3 и инициализируется значениями 1, 2, 4; 0, 9, 5; 8, 6, 3.
- Создается матрица B такого же размера, что и A.
- Вызывается функция print_matrix, которая выводит матрицу A на экран.
- Выполняется операция транспонирования матрицы A, используя функцию transpose_matrix.
- Результат транспонирования сохраняется в матрице B.
- Выводится матрица B на экран. Функция print_matrix принимает указатель на матрицу и размер матрицы в качестве аргументов. Она использует два вложенных цикла для перебора всех элементов матрицы и вывода их на экран. Функция transpose_matrix принимает указатели на две матрицы и размер матрицы в качестве аргументов. Она использует два вложенных цикла для перебора всех элементов матрицы arr1 и сохранения их в матрице arr2 в соответствии с правилами транспонирования.