Transpose of a matrix is obtained by changing rows to columns and columns to rows. In other words, transpose of A[][] is obtained by changing A[i][j] to A[j][i].

For Square Matrix :
The below program finds transpose of A[][] and stores the result in B[][], we can change N for different dimension.
C++
#include <stdio.h>
#define N 4
void transpose( int A[][N], int B[][N])
{
int i, j;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
B[i][j] = A[j][i];
}
int main()
{
int A[N][N] = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
int B[N][N], i, j;
transpose(A, B);
printf ( "Result matrix is \n" );
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
printf ( "%d " , B[i][j]);
printf ( "\n" );
}
return 0;
}
|
Java
class GFG
{
static final int N = 4 ;
static void transpose( int A[][], int B[][])
{
int i, j;
for (i = 0 ; i < N; i++)
for (j = 0 ; j < N; j++)
B[i][j] = A[j][i];
}
public static void main (String[] args)
{
int A[][] = { { 1 , 1 , 1 , 1 },
{ 2 , 2 , 2 , 2 },
{ 3 , 3 , 3 , 3 },
{ 4 , 4 , 4 , 4 }};
int B[][] = new int [N][N], i, j;
transpose(A, B);
System.out.print( "Result matrix is \n" );
for (i = 0 ; i < N; i++)
{
for (j = 0 ; j < N; j++)
System.out.print(B[i][j] + " " );
System.out.print( "\n" );
}
}
}
|
Python3
N = 4
def transpose(A,B):
for i in range (N):
for j in range (N):
B[i][j] = A[j][i]
A = [ [ 1 , 1 , 1 , 1 ],
[ 2 , 2 , 2 , 2 ],
[ 3 , 3 , 3 , 3 ],
[ 4 , 4 , 4 , 4 ]]
B = [[ 0 , 0 , 0 , 0 ],[ 0 , 0 , 0 , 0 ],[ 0 , 0 , 0 , 0 ],[ 0 , 0 , 0 , 0 ]]
transpose(A, B)
print ( "Result matrix is" )
for i in range (N):
for j in range (N):
print (B[i][j], " " , end = '')
print ()
|
C#
using System;
class GFG
{
static int N = 4;
static void transpose( int [,]A, int [,]B)
{
int i, j;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
B[i,j] = A[j,i];
}
public static void Main ()
{
int [,]A = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
int [,]B = new int [N,N];
transpose(A, B);
Console.Write( "Result matrix is \n" );
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < N; j++)
Console.Write(B[i,j] + " " );
Console.Write( "\n" );
}
}
}
|
PHP
<?php
function transpose(& $A , & $B )
{
$N = 4;
for ( $i = 0; $i < $N ; $i ++)
for ( $j = 0; $j < $N ; $j ++)
$B [ $i ][ $j ] = $A [ $j ][ $i ];
}
$A = array ( array (1, 1, 1, 1),
array (2, 2, 2, 2),
array (3, 3, 3, 3),
array (4, 4, 4, 4));
$N = 4;
transpose( $A , $B );
echo "Result matrix is \n" ;
for ( $i = 0; $i < $N ; $i ++)
{
for ( $j = 0; $j < $N ; $j ++)
{
echo $B [ $i ][ $j ];
echo " " ;
}
echo "\n" ;
}
?>
|
Output:
Result matrix is
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
For Rectangular Matrix :
The below program finds transpose of A[][] and stores the result in B[][].
C++
#include <stdio.h>
#define M 3
#define N 4
void transpose( int A[][N], int B[][M])
{
int i, j;
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
B[i][j] = A[j][i];
}
int main()
{
int A[M][N] = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3}};
int B[N][M], i, j;
transpose(A, B);
printf ( "Result matrix is \n" );
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
printf ( "%d " , B[i][j]);
printf ( "\n" );
}
return 0;
}
|
Java
class GFG
{
static final int M = 3 ;
static final int N = 4 ;
static void transpose( int A[][], int B[][])
{
int i, j;
for (i = 0 ; i < N; i++)
for (j = 0 ; j < M; j++)
B[i][j] = A[j][i];
}
public static void main (String[] args)
{
int A[][] = { { 1 , 1 , 1 , 1 },
{ 2 , 2 , 2 , 2 },
{ 3 , 3 , 3 , 3 }};
int B[][] = new int [N][M], i, j;
transpose(A, B);
System.out.print( "Result matrix is \n" );
for (i = 0 ; i < N; i++)
{
for (j = 0 ; j < M; j++)
System.out.print(B[i][j] + " " );
System.out.print( "\n" );
}
}
}
|
Python3
M = 3
N = 4
def transpose(A, B):
for i in range (N):
for j in range (M):
B[i][j] = A[j][i]
A = [ [ 1 , 1 , 1 , 1 ],
[ 2 , 2 , 2 , 2 ],
[ 3 , 3 , 3 , 3 ]]
B = [[ 0 for x in range (M)] for y in range (N)]
transpose(A, B)
print ( "Result matrix is" )
for i in range (N):
for j in range (M):
print (B[i][j], " " , end = '')
print ()
|
C#
using System;
class GFG {
static int M = 3;
static int N = 4;
static void transpose( int [,]A, int [,]B)
{
int i, j;
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
B[i,j] = A[j,i];
}
public static void Main ()
{
int [,]A = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3}};
int [,]B= new int [N,M];
transpose(A, B);
Console.WriteLine( "Result matrix is \n" );
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < M; j++)
Console.Write(B[i,j] + " " );
Console.Write( "\n" );
}
}
}
|
PHP
<?php
function transpose(& $A , & $B )
{
$N = 4;
$M = 3;
for ( $i = 0; $i < $N ; $i ++)
for ( $j = 0; $j < $M ; $j ++)
$B [ $i ][ $j ] = $A [ $j ][ $i ];
}
$A = array ( array (1, 1, 1, 1),
array (2, 2, 2, 2),
array (3, 3, 3, 3));
$N = 4;
$M = 3;
transpose( $A , $B );
echo "Result matrix is \n" ;
for ( $i = 0; $i < $N ; $i ++)
{
for ( $j = 0; $j < $M ; $j ++)
{
echo $B [ $i ][ $j ];
echo " " ;
}
echo "\n" ;
}
?>
|
Output:
Result matrix is
1 2 3
1 2 3
1 2 3
1 2 3
In-Place for Square Matrix:
C++
#include <bits/stdc++.h>
using namespace std;
#define N 4
void transpose( int A[][N])
{
for ( int i = 0; i < N; i++)
for ( int j = i+1; j < N; j++)
swap(A[i][j], A[j][i]);
}
int main()
{
int A[N][N] = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
transpose(A);
printf ( "Modified matrix is \n" );
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < N; j++)
printf ( "%d " , A[i][j]);
printf ( "\n" );
}
return 0;
}
|
Java
class GFG
{
static final int N = 4 ;
static void transpose( int A[][])
{
for ( int i = 0 ; i < N; i++)
for ( int j = i+ 1 ; j < N; j++)
{
int temp = A[i][j];
A[i][j] = A[j][i];
A[j][i] = temp;
}
}
public static void main (String[] args)
{
int A[][] = { { 1 , 1 , 1 , 1 },
{ 2 , 2 , 2 , 2 },
{ 3 , 3 , 3 , 3 },
{ 4 , 4 , 4 , 4 }};
transpose(A);
System.out.print( "Modified matrix is \n" );
for ( int i = 0 ; i < N; i++)
{
for ( int j = 0 ; j < N; j++)
System.out.print(A[i][j] + " " );
System.out.print( "\n" );
}
}
}
|
Python3
N = 4
def transpose(A):
for i in range (N):
for j in range (i + 1 , N):
A[i][j], A[j][i] = A[j][i], A[i][j]
A = [ [ 1 , 1 , 1 , 1 ],
[ 2 , 2 , 2 , 2 ],
[ 3 , 3 , 3 , 3 ],
[ 4 , 4 , 4 , 4 ]]
transpose(A)
print ( "Modified matrix is" )
for i in range (N):
for j in range (N):
print (A[i][j], " " , end = '')
print ()
|
C#
using System;
class GFG {
static int N = 4;
static void transpose( int [,]A)
{
for ( int i = 0; i < N; i++)
for ( int j = i+1; j < N; j++)
{
int temp = A[i,j];
A[i,j] = A[j,i];
A[j,i] = temp;
}
}
public static void Main ()
{
int [,]A = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
transpose(A);
Console.WriteLine( "Modified matrix is " );
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < N; j++)
Console.Write(A[i,j] + " " );
Console.WriteLine();
}
}
}
|
PHP
<?php
function transpose(& $A )
{
$N = 4;
for ( $i = 0; $i < $N ; $i ++)
for ( $j = $i + 1; $j < $N ; $j ++)
{
$temp = $A [ $i ][ $j ];
$A [ $i ][ $j ] = $A [ $j ][ $i ];
$A [ $j ][ $i ] = $temp ;
}
}
$N = 4;
$A = array ( array (1, 1, 1, 1),
array (2, 2, 2, 2),
array (3, 3, 3, 3),
array (4, 4, 4, 4));
transpose( $A );
echo "Modified matrix is " . "\n" ;
for ( $i = 0; $i < $N ; $i ++)
{
for ( $j = 0; $j < $N ; $j ++)
echo $A [ $i ][ $j ] . " " ;
echo "\n" ;
}
?>
|
Output:
Modified matrix is
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.