Транспониране на матрица - размяна на елементите по редове и колони
Нека имаме матрица А с брой редове m и брой колони n.
Процесът транспониране на матрица се състои в размяна местата на елементите по редове и колони в същата матрица.
Във всяка матрица елементите й имат индекси за ред и стълб - примерно aij - ред i, колона j, където 1<=i<=m; 1<=j<=n.
При транспониране всички елементи с индекси i,j си разменят местата.
Операцията транспониране е унарна. Една матрица се нарича симетрична, ако е равна на своята транспонирана матрица.
В примерната програма началната матрица се представя като двумерен масив.
Процесът за транспониране на матрица се осъществава чрез обхождане на масива с два вложени цикъла.
Самата размяна на елементите по редове и колони се осъществява чрез трета променлива.
Не е задължително една матрица да е квадратна, за да се извърши транспониране. Но при транспониране на матрица масивът трябва да има размер по редове и по колони максималния размер и по редове и по колони на началната матрица.
Следващата програма дава решена задача за транспониране на матрица:
#include <iostream>
#include <iomanip>//bibliotechna funkciq setw
using namespace std;
const int red =5,kol=4;//broj redowe move da e razlichn ot broj koloni
int mas[red][red];//po-golqmoto chislo za redowe i koloni
void Wywedi()
{int r,k;
for (r=0;r<red;r++)
{for (k=0;k<kol;k++) { mas[r][k]=(r+1)*10+k+1; }//stojnosti na element ot matrica
}//for r
}//wywedi
void Pechat(int a,int b)
{int r,k;
for (r=0;r<a;r++)
{for (k=0;k<b;k++) {cout<<setw(4)<<mas[r][k];}
//setw(4) wseki element ot matrica po 4 pozicii
cout<<endl;//sled pechat na red
}// for r
cout<<endl;//now red
}//Pechat
void transponirane ()
{int r,k,chis;
for (r=1;r<red;r++)//razmenq elementite na matrica simetrichno
//sprqmo osnowniq diagonal kato elementite po diagonala ne se promenqt
{ for (k=0;k<=r;k++)
{ chis=mas[r][k];//razmqna na elementi na matrica chrez 3-ta promenliwa
mas[r][k]=mas[k][r];
mas[k][r]=chis;
}//for k
}//for r
}// transponirane
int main()
{
cout<<"Imate dwumeren, prawoygylen masiw s 5 broq redowe i 4 koloni \n";
cout<<"sysdyrvash estestweni 2-cifreni chisla. Da se systawi\n";
cout<<"programa, chrez koqto matricata se transponira, t.e. elementite\n";
cout<<"ot wseki red stawat elementi na syotwetnata kolona i obratno.\n";
cout<<"Programata da izwevda nachalno i krajno systoqnie na tazi matrica.\n";
cout<<"Natisnete Enter za demonstraciq.\n";
system ("pause");
cout<<"Nachalno systoqnie na matrica "<<endl;
Wywedi();
Pechat(red,kol);
transponirane ();
cout<<"Systoqnie na masiwa sled razmqna redowe koloni (transponirane):"<<endl;
Pechat(kol,red);
system("pause");//ochakwa natiskane na klawish
return 0;
}//kraj na programa za transponirane na matrica redowe koloni
Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.
Начало на страницата