Транспониране на матрица - размяна на елементите по редове и колони

Нека имаме матрица А с брой редове 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 

Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.

Начало на страницата

 
Размер на шрифта
Increase Font Size Option 3 Reset Font Size Option 3 Decrease Font Size Option 3
Bulgarian Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish
Търсене в сайта: