How to find transpose of a matrix in C++
In this tutorial, we will learn how to find the transpose of a matrix in C++ and will understand the logic behind the program.
Transpose of a matrix is a manipulation of a matrix such that each row becomes column and each column becomes a row of that matrix. In other words, Transpose of a matrix M[][] is when M[i][j] becomes M[j][i].
We can transpose a matrix if and only if the matrix is a square matrix, i.e., if the matrix has the same rows and columns size/length.
Example:
Consider a matrix of 4x4 Input matrix: 1 4 5 6 2 3 5 4 4 6 8 7 1 4 8 0 Transpose of this matrix will be: 1 2 4 1 4 3 6 4 5 5 8 8 6 4 7 0
Algorithm
- Declare two matrices say ‘A‘ and ‘B’ of size m*n and initialize the first matrix ‘A’. (where n and m are the lengths of row and column respectively)
- check whether ‘n‘ is equal to ‘m‘. Then proceed for next steps.
- Print the Matrix befor transpose.
- start a loop form i = 0 to ‘n’
a. start another loop form j = 0 to ‘n’
i) perform transpose of matrix by B[i][j] = A[j][i].
ii) increse ‘j’ by one.
b. increse ‘i’ by one. - print the elements second matrix ‘B’.
The implementation of the algorithm in C++ as follows:
transpose of a matrix in C++
#include <cstdlib> #include <iostream> #define size 100 using namespace std; //Funtion to diaplay elements of a matrix void display(int Matrix[size][size], int n, int m){ for(int i = 0;i < n; i++){ for(int j = 0;j < m;j++){ cout<<Matrix[i][j]<<" "; } cout<<endl; } } int main(int argc, char** argv) { int A[size][size],B[size][size], n, m; cout<<"Enter the length of rows: "; cin>>n; cout<<"Enter length of column: "; cin>>m; //checking for equality of m and n if(n != m){ cout<<"Length of rows and columns must be equal."; exit(0); } //Taking input in matrix cout<<"\nEnter the elements of matrix: \n"; for(int i = 0;i < n; i++){ for(int j = 0;j < m;j++){ cin>>A[i][j]; } } cout<<"\nMatrix, before transpose: \n"<<endl; display(A, n, m); //Transpose of matrix for(int i = 0;i < n; i++){ for(int j = 0;j < m;j++){ B[i][j] = A[j][i]; } } cout<<"\nMatrix after transpose: \n"<<endl; display(B, n, m); return 0; }
Time complexity: O(n^2)
you may also learn:
Leave a Reply