برنامه محاسبه ترانهاده ماتریس — به زبان ساده
در مطلب «ترانهاده ماتریس — به زبان ساده» مفهوم ماتریس ترانهاده یا ترانهاده ماتریس (Matrix Transpose) بیان و روش محاسبه آن تشریح شده است. در این مطلب، روش نوشتن برنامه محاسبه ترانهاده ماتریس بیان و پیادهسازی آن در زبانهای برنامهنویسی گوناگون شامل ++C، «جاوا» (Java)، «پایتون» (Python)، «سیشارپ» (#C) و «پیاچپی» (PHP) انجام شده است. ترانهاده یک ماتریس با تغییر سطرها به ستونها وستونها به سطرها به دست میآید.
در انیمیشن زیر نیز روش محاسبه ترانهاده ماتریس نمایش داده شده است:
به عبارت دیگر، ترانهاده ماتریس []A با تغییر [A[i][j به [A[j][i محاسبه میشود. برنامه زیر، ترانهاده ماتریس [][]A را پیدا و نتیجه را در [][]B ذخیره میکند. میتوان N را برای ابعاد گوناگون تغییر داد.
برنامه محاسبه ترانهاده ماتریس در ++C
1#include <stdio.h>
2#define N 4
3
4// This function stores transpose of A[][] in B[][]
5void transpose(int A[][N], int B[][N])
6{
7 int i, j;
8 for (i = 0; i < N; i++)
9 for (j = 0; j < N; j++)
10 B[i][j] = A[j][i];
11}
12
13int main()
14{
15 int A[N][N] = { {1, 1, 1, 1},
16 {2, 2, 2, 2},
17 {3, 3, 3, 3},
18 {4, 4, 4, 4}};
19
20 int B[N][N], i, j;
21
22 transpose(A, B);
23
24 printf("Result matrix is \n");
25 for (i = 0; i < N; i++)
26 {
27 for (j = 0; j < N; j++)
28 printf("%d ", B[i][j]);
29 printf("\n");
30 }
31
32 return 0;
33}
برنامه محاسبه ترانهاده ماتریس در جاوا
1// Java Program to find
2// transpose of a matrix
3
4class GFG
5{
6 static final int N = 4;
7
8 // This function stores transpose
9 // of A[][] in B[][]
10 static void transpose(int A[][], int B[][])
11 {
12 int i, j;
13 for (i = 0; i < N; i++)
14 for (j = 0; j < N; j++)
15 B[i][j] = A[j][i];
16 }
17
18 // Driver code
19 public static void main (String[] args)
20 {
21 int A[][] = { {1, 1, 1, 1},
22 {2, 2, 2, 2},
23 {3, 3, 3, 3},
24 {4, 4, 4, 4}};
25
26 int B[][] = new int[N][N], i, j;
27
28 transpose(A, B);
29
30 System.out.print("Result matrix is \n");
31 for (i = 0; i < N; i++)
32 {
33 for (j = 0; j < N; j++)
34 System.out.print(B[i][j] + " ");
35 System.out.print("\n");
36 }
37 }
38}
39
40// This code is contributed by Anant Agarwal.
برنامه محاسبه ترانهاده ماتریس در پایتون ۳
1# Python3 Program to find
2# transpose of a matrix
3
4N = 4
5
6# This function stores
7# transpose of A[][] in B[][]
8
9def transpose(A,B):
10
11 for i in range(N):
12 for j in range(N):
13 B[i][j] = A[j][i]
14
15# driver code
16A = [ [1, 1, 1, 1],
17 [2, 2, 2, 2],
18 [3, 3, 3, 3],
19 [4, 4, 4, 4]]
20
21
22B = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] # To store result
23
24transpose(A, B)
25
26print("Result matrix is")
27for i in range(N):
28 for j in range(N):
29 print(B[i][j], " ", end='')
30 print()
31
32# This code is contributed
33# by Anant Agarwal.
برنامه محاسبه ترانهاده ماتریس در #C
1// C# Program to find
2// transpose of a matrix
3using System;
4
5class GFG
6{
7 static int N = 4;
8
9 // This function stores transpose
10 // of A[][] in B[][]
11 static void transpose(int [,]A, int [,]B)
12 {
13 int i, j;
14 for (i = 0; i < N; i++)
15 for (j = 0; j < N; j++)
16 B[i,j] = A[j,i];
17 }
18
19 // Driver code
20 public static void Main ()
21 {
22 int [,]A = { {1, 1, 1, 1},
23 {2, 2, 2, 2},
24 {3, 3, 3, 3},
25 {4, 4, 4, 4}};
26
27 int [,]B = new int[N,N];
28
29 // Function calling
30 transpose(A, B);
31
32 Console.Write("Result matrix is \n");
33 for (int i = 0; i < N; i++)
34 {
35 for (int j = 0; j < N; j++)
36 Console.Write(B[i,j] + " ");
37 Console.Write("\n");
38 }
39 }
40}
41
42// This code is contributed by nitin mittal.
برنامه محاسبه ترانهاده ماتریس در PHP
1<?php
2
3// This function stores transpose
4// of A[][] in B[][]
5function transpose(&$A, &$B)
6{
7 $N = 4;
8 for ($i = 0; $i < $N; $i++)
9 for ($j = 0; $j < $N; $j++)
10 $B[$i][$j] = $A[$j][$i];
11}
12
13// Driver code
14$A = array(array(1, 1, 1, 1),
15 array(2, 2, 2, 2),
16 array(3, 3, 3, 3),
17 array(4, 4, 4, 4));
18
19$N = 4;
20
21transpose($A, $B);
22
23echo "Result matrix is \n";
24for ($i = 0; $i < $N; $i++)
25{
26 for ($j = 0; $j < $N; $j++)
27 {
28 echo $B[$i][$j];
29 echo " ";
30 }
31 echo "\n";
32}
33
34// This code is contributed
35// by Shivi_Aggarwal
36?>
خروجی قطعه کدهای بالا، به صورت زیر است.
Result matrix is 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
برای ماتریس مربعی، میتوان از برنامههایی که در ادامه آمده جهت پیدا کردن ترانهاده ماتریس [][]A و ذخیره آن در [][]B استفاده کرد.
برنامه محاسبه ترانهاده ماتریس مربعی در ++C
1#include <stdio.h>
2#define M 3
3#define N 4
4
5// This function stores transpose of A[][] in B[][]
6void transpose(int A[][N], int B[][M])
7{
8 int i, j;
9 for (i = 0; i < N; i++)
10 for (j = 0; j < M; j++)
11 B[i][j] = A[j][i];
12}
13
14int main()
15{
16 int A[M][N] = { {1, 1, 1, 1},
17 {2, 2, 2, 2},
18 {3, 3, 3, 3}};
19
20 // Note dimensions of B[][]
21 int B[N][M], i, j;
22
23 transpose(A, B);
24
25 printf("Result matrix is \n");
26 for (i = 0; i < N; i++)
27 {
28 for (j = 0; j < M; j++)
29 printf("%d ", B[i][j]);
30 printf("\n");
31 }
32
33 return 0;
34}
برنامه محاسبه ترانهاده ماتریس مربعی در جاوا
1// Java Program to find
2// transpose of a matrix
3
4class GFG
5{
6 static final int M = 3;
7 static final int N = 4;
8
9 // This function stores transpose
10 // of A[][] in B[][]
11 static void transpose(int A[][], int B[][])
12 {
13 int i, j;
14 for (i = 0; i < N; i++)
15 for (j = 0; j < M; j++)
16 B[i][j] = A[j][i];
17 }
18
19 // Driver code
20 public static void main (String[] args)
21 {
22 int A[][] = { {1, 1, 1, 1},
23 {2, 2, 2, 2},
24 {3, 3, 3, 3}};
25
26 int B[][] = new int[N][M], i, j;
27
28 transpose(A, B);
29
30 System.out.print("Result matrix is \n");
31 for (i = 0; i < N; i++)
32 {
33 for (j = 0; j < M; j++)
34 System.out.print(B[i][j] + " ");
35 System.out.print("\n");
36 }
37 }
38}
39
40// This code is contributed by Anant Agarwal.
برنامه محاسبه ترانهاده ماتریس مربعی در پایتون
1# Python3 Program to find
2# transpose of a matrix
3
4M = 3
5N = 4
6
7# This function stores
8# transpose of A[][] in B[][]
9
10def transpose(A, B):
11
12 for i in range(N):
13 for j in range(M):
14 B[i][j] = A[j][i]
15
16# driver code
17A = [ [1, 1, 1, 1],
18 [2, 2, 2, 2],
19 [3, 3, 3, 3]]
20
21
22# To store result
23B = [[0 for x in range(M)] for y in range(N)]
24
25transpose(A, B)
26
27print("Result matrix is")
28for i in range(N):
29 for j in range(M):
30 print(B[i][j], " ", end='')
31 print()
برنامه محاسبه ترانهاده ماتریس مربعی در #C
1// C# Program to find
2// transpose of a matrix
3 using System;
4class GFG {
5
6 static int M = 3;
7 static int N = 4;
8
9 // This function stores transpose
10 // of A[][] in B[][]
11 static void transpose(int [,]A, int [,]B)
12 {
13 int i, j;
14 for (i = 0; i < N; i++)
15 for (j = 0; j < M; j++)
16 B[i,j] = A[j,i];
17 }
18
19 // Driver code
20 public static void Main ()
21 {
22 int [,]A = { {1, 1, 1, 1},
23 {2, 2, 2, 2},
24 {3, 3, 3, 3}};
25
26 int [,]B= new int[N,M];
27
28 transpose(A, B);
29
30 Console.WriteLine("Result matrix is \n");
31 for (int i = 0; i < N; i++)
32 {
33 for (int j = 0; j < M; j++)
34 Console.Write(B[i,j] + " ");
35 Console.Write("\n");
36 }
37 }
38}
39
40// This code is contributed by nitin mittal
برنامه محاسبه ترانهاده ماتریس مربعی در PHP
1<?php
2
3// This function stores transpose
4// of A[][] in B[][]
5function transpose(&$A, &$B)
6{
7 $N = 4;
8 $M = 3;
9 for ($i = 0; $i < $N; $i++)
10 for ($j = 0; $j < $M; $j++)
11 $B[$i][$j] = $A[$j][$i];
12}
13
14// Driver code
15
16$A = array(array(1, 1, 1, 1),
17 array(2, 2, 2, 2),
18 array(3, 3, 3, 3));
19
20$N = 4;
21$M = 3;
22transpose($A, $B);
23
24echo "Result matrix is \n";
25for ($i = 0; $i < $N; $i++)
26{
27 for ($j = 0; $j < $M; $j++)
28 {
29 echo $B[$i][$j];
30 echo " ";
31 }
32 echo "\n";
33}
34
35// This code is contributed
36// by Shivi_Aggarwal
37?>
خروجی قطعه کدهای بالا به صورت زیر است.
Result matrix is 1 2 3 1 2 3 1 2 3 1 2 3
برای محاسبه ترانهاده ماتریس مربعی به صورت در محل (در جا) میتوان از روش زیر استفاده کرد.
برنامه محاسبه ترانهاده ماتریس مربعی به صورت در محل در ++C
1#include <bits/stdc++.h>
2using namespace std;
3
4#define N 4
5
6// Converts A[][] to its transpose
7void transpose(int A[][N])
8{
9 for (int i = 0; i < N; i++)
10 for (int j = i+1; j < N; j++)
11 swap(A[i][j], A[j][i]);
12}
13
14int main()
15{
16 int A[N][N] = { {1, 1, 1, 1},
17 {2, 2, 2, 2},
18 {3, 3, 3, 3},
19 {4, 4, 4, 4}};
20
21 transpose(A);
22
23 printf("Modified matrix is \n");
24 for (int i = 0; i < N; i++)
25 {
26 for (int j = 0; j < N; j++)
27 printf("%d ", A[i][j]);
28 printf("\n");
29 }
30
31 return 0;
32}
برنامه محاسبه ترانهاده ماتریس مربعی به صورت در محل در جاوا
1// Java Program to find
2// transpose of a matrix
3
4class GFG
5{
6 static final int N = 4;
7
8 // Finds transpose of A[][] in-place
9 static void transpose(int A[][])
10 {
11 for (int i = 0; i < N; i++)
12 for (int j = i+1; j < N; j++)
13 {
14 int temp = A[i][j];
15 A[i][j] = A[j][i];
16 A[j][i] = temp;
17 }
18 }
19
20 // Driver code
21 public static void main (String[] args)
22 {
23 int A[][] = { {1, 1, 1, 1},
24 {2, 2, 2, 2},
25 {3, 3, 3, 3},
26 {4, 4, 4, 4}};
27
28 transpose(A);
29
30 System.out.print("Modified matrix is \n");
31 for (int i = 0; i < N; i++)
32 {
33 for (int j = 0; j < N; j++)
34 System.out.print(A[i][j] + " ");
35 System.out.print("\n");
36 }
37 }
38}
برنامه محاسبه ترانهاده ماتریس مربعی به صورت در محل در پایتون ۳
1# Python3 Program to find
2# transpose of a matrix
3
4N = 4
5
6# Finds transpose of A[][] in-place
7def transpose(A):
8
9 for i in range(N):
10 for j in range(i+1, N):
11 A[i][j], A[j][i] = A[j][i], A[i][j]
12
13# driver code
14A = [ [1, 1, 1, 1],
15 [2, 2, 2, 2],
16 [3, 3, 3, 3],
17 [4, 4, 4, 4]]
18
19 transpose(A)
20
21print("Modified matrix is")
22for i in range(N):
23 for j in range(N):
24 print(A[i][j], " ", end='')
25 print()
26
27# This code is contributed
28# by Anant Agarwal.
برنامه محاسبه ترانهاده ماتریس مربعی به صورت در محل در #C
1// C# Program to find transpose of
2// a matrix
3using System;
4
5class GFG {
6
7 static int N = 4;
8
9 // Finds transpose of A[][] in-place
10 static void transpose(int [,]A)
11 {
12 for (int i = 0; i < N; i++)
13 for (int j = i+1; j < N; j++)
14 {
15 int temp = A[i,j];
16 A[i,j] = A[j,i];
17 A[j,i] = temp;
18 }
19 }
20
21 // Driver code
22 public static void Main ()
23 {
24 int [,]A = { {1, 1, 1, 1},
25 {2, 2, 2, 2},
26 {3, 3, 3, 3},
27 {4, 4, 4, 4}};
28
29 transpose(A);
30
31 Console.WriteLine("Modified matrix is ");
32 for (int i = 0; i < N; i++)
33 {
34 for (int j = 0; j < N; j++)
35 Console.Write(A[i,j] + " ");
36
37 Console.WriteLine();
38 }
39 }
40}
41
42// This code is contributed by anuj_67.
برنامه محاسبه ترانهاده ماتریس مربعی به صورت درجا در PHP
1<?php
2// Converts A[][] to its transpose
3function transpose(&$A)
4{
5 $N = 4;
6 for ($i = 0; $i < $N; $i++)
7 for ($j = $i + 1; $j < $N; $j++)
8 {
9 $temp = $A[$i][$j];
10 $A[$i][$j] = $A[$j][$i];
11 $A[$j][$i] = $temp;
12 }
13}
14
15// Driver Code
16$N = 4;
17$A = array(array(1, 1, 1, 1),
18 array(2, 2, 2, 2),
19 array(3, 3, 3, 3),
20 array(4, 4, 4, 4));
21
22transpose($A);
23
24echo "Modified matrix is " . "\n";
25for ($i = 0; $i < $N; $i++)
26{
27 for ($j = 0; $j < $N; $j++)
28 echo $A[$i][$j] . " ";
29 echo "\n";
30}
31
32// This code is contributed
33// by Akanksha Rai(Abby_akku)
34?>
خروجی قطعه کدهای بالا به صورت زیر است.
Modified matrix is 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامهنویسی C++
- مجموعه آموزشهای ریاضیات
- معرفی تکنیکهای مرتبسازی (Sorting Techniques) — ساختار داده و الگوریتم ها
- مرتبسازی درجی (Insertion Sort) — به زبان ساده
- پیچیدگی زمانی الگوریتمهای مرتبسازی با نماد O بزرگ — به زبان ساده
^^