Транспонировать матрицу при определенных условиях - C (СИ)
Формулировка задачи:
Помогите , пожалуйста , решить задачу. Дана действительная матрица размерности .
Если среднее арифметическое элементов стоящих над главной диагональю больше суммы элементов стоящих на побочной диагонали, то поменять местами строки и столбцы (транспонировать матрицу). В противном случае матрицу оставить без изменения.
Решение задачи: «Транспонировать матрицу при определенных условиях»
textual
Листинг программы
#include <iostream>
#include <time.h>
using namespace std;
void print(int **a,int n, int m);
int **trans(int **a,int n, int m);
void main()
{
setlocale(LC_ALL,"Russian");
int n, m;
cout<<"Введите размерность двумерного массива "<<endl;
cin>>n>>m;
int **mas;
mas = new int *[n];
for ( int i = 0 ; i < n ; i++)
mas [i] = new int [m] ;
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
mas[i][j]=rand()%30+10;
print (mas,n,m);
trans (mas,n,m);
cout<<endl;
print (mas,n,m);
for ( int i = 0 ; i <n ; i++)
delete [] mas [i];
delete [] mas;
system ("pause");
}
void print(int **a,int n,int m)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
int **trans(int **a,int n,int m)
{
int r ;
for ( int i=0; i<n ; i++)
for ( int j=0; j<n; j++)
if (i<j)
{
r=a[i][j]; a[i][j]=a[j][i]; a[j][i]=r;
}
return 0;
}
Объяснение кода листинга программы
Код выполняет следующие действия:
- Задаёт размерность двумерного массива с помощью ввода с клавиатуры.
- Выделяет память под массив указателей на int.
- Внутри цикла выделяет память под каждый int массива и инициализирует его случайными числами от 10 до 40.
- Выводит на экран исходный массив.
- Транспонирует массив с помощью функции trans.
- Выводит на экран транспонированный массив.
- Освобождает память, выделенную под массив и его элементы. Функция print выводит на экран содержимое массива. Функция trans транспонирует массив.