Транспонирование матрицы в С++

Здесь представлен программный код, с помощью которого выполняется транспонирование матриц. Для этой цели создана специальная функция. Функция является перегруженной, у нее два варианта: с одним аргументом и с двумя аргументами. Дело в том, что функция в качестве значения массив возвращать не может. Поэтому необходимо предусмотреть какой-то механизм возвращения результата (результат - транспонированная матрица). Сами собой напрашиваются два подхода: передавать матрицу-результат аргументом функции либо вносить изменения непосредственно в исходную матрицу. В соответствии с этим определяются и варианты функции транспо­нирования матриц. Исходная матрица (двумерный массив) передается пер­ вым аргументом функции trans(). Функция значения не возвращает. Если больше аргументов нет, изменения вносятся в эту матрицу. Если у функции есть еще один аргумент (двумерный массив такого же размера, как и пер­вый), результат транспонирования записывается во вторую матрицу.
#include 
#include 
using namespace std;
//Размер матриц:
const N=3;
//Транспонирование матрицы (результат-второй аргумент):
void trans(double A[N][N],double B[N][N]){
int i,j;
for(i=0; i < N; i++)
 for(j=0; j < N; j++)
 B[i][j]=A[j][i];
}
//Транспонирование матрицы (результат записывается в аргумент):
void trans(double A[N][N]){
int i,j;
double s;
for(i=0; i < N; i++)
 for(j=i+1; j < N; j++){
 s=A[i][j];
 A[i][j]=A[j][i];
 A[j][i]=s;}
}
//Заполнение матрицы случайными числами:
void fill(double A[N][N]){
int i,j;
for(i=0; i < N; i++)
 for(j=0; j < N; j++)
 A[i][j]=rand()%10;
}
//Вывод матрицы на экран:
void show(double A[N][N]){
int i,j;
for(i=0; i < N; i++){
 for(j=0; j < N; j++)
 cout << A[i][j] << " ";
 cout << endl;}
}
int main(){
//Двумерные массивы:
double A[N][N],B[N][N];
cout << "Initial matrix:\n";
//Заполнение массива:
fill(A);
//Отображение массива:
show(A);
cout << "After transform:\n";
//Транспонирование:
trans(A,B);
//Результат:
show(B);
cout << "Initial matrix:\n";
//Транспонирование:
fill(A);
//Результат:
show(A);
cout << "After transform:\n";
trans(A);
show(A);
return 0;
}
Онлайн всего: 3
Гостей: 3
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте