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 0Algorithm
- 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