Повернуть матрицу симметрично относительно главной диагонали - C (СИ)
Формулировка задачи:
Задание: Повернуть матрицу симметрично относительно главной диагонали.
Написать программу, в которой введение массива выполняется в отдельной функции. Затем этот массив передается в главную функцию. Главная функция передает массив в другую функцию, которая обрабатывает массив и выводит результат. Ввод массива оформить в виде функции VVOD (), обработку и вывод массива в виде функции ОВR ().
Решение задачи: «Повернуть матрицу симметрично относительно главной диагонали»
textual
Листинг программы
#include <stdio.h>
int** cr_matr(int col,int str) //Создаем матрицу размера col*str
{
int **a = (int **) calloc(str,sizeof(int *));
for (int i=0;i < str;i++)
a[i] = (int *) calloc(col,sizeof(int));
return a;
}
void VVOD(int **arr, int m, int n)
{
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
scanf("%i",&arr[i][j]);
}
void OBR (int **arr,int m,int n)
{
int i,j,temp;
for(i=0; i<n; ++i)
for(j=i; j<m; ++j)
{
temp=arr[i][j];
arr[i][j]=arr[j][i];
arr[j][i]=temp;
}
for(int i = 0; i < n;i++)
for(int j = 0; j < m; j++)
printf("%i ",arr[i][j]);
printf("\n");
}
void main()
{
int **arr,col,str;
puts("Введите количество столбцов:");
scanf("%i",&col);
puts("Введите количество строк:");
scanf("%i",&str);
arr = cr_matr(col,str);
VVOD(arr,col,str);
OBR(arr,col,str);
}
Объяснение кода листинга программы
- Создаем матрицу размера col*str, используя функцию cr_matr.
- С помощью функции VVOD заполняем матрицу значениями.
- С помощью функции OBR поворачиваем матрицу симметрично относительно главной диагонали.
- Выводим результат на экран.