Транспонировать матрицу при определенных условиях - 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 транспонирует массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д