標題:
資料結構 102 二維陣列矩陣轉置運算(易)
[打印本頁]
作者:
may
時間:
2025-3-17 22:59
標題:
資料結構 102 二維陣列矩陣轉置運算(易)
TQC+ 程式設計:資料結構 102 二維陣列矩陣轉置運算
1. 題目說明:
請依下列題意進行作答,使輸出值符合題意要求。
2. 設計說明:
請撰寫一程式,首先要求使用者輸入矩陣的列數(m)與行數(n),代表要創建矩陣A有 m x n 個元素,接著依序輸入 m x n 個元素值(皆為整數),請計算A的轉置矩陣AT,並輸出兩個矩陣A與AT 。
提示:矩陣(Matrix)指的是外觀為 m x n 的二維資料,其中Aij 表示矩陣中第i列第j行的元素,而位置可表示成(i,j) 。
提示:矩陣A 的轉置(Transpose)是另一個矩陣AT,方法是將矩陣A中每個元素從位置(i,j)轉換到(j,i)。例如:
[attach]20790[/attach]、
提示:輸出矩陣時,每列皆使用中括號([、])包覆,且整數間使用半形空白間隔。
3. 輸入輸出:
輸入說明
第 1 列:輸入矩陣的列數 m。
第 2 列:輸入矩陣的行數 n。
第 3~m*n+2 列:依序輸入矩陣元素(皆為整數)。
輸出說明
初始創建矩陣
轉置後矩陣
範例輸入1
2
3
1
2
3
4
5
6
範例輸出1
Original:
[1 2 3]
[4 5 6]
Transpose:
[1 4]
[2 5]
[3 6]
範例輸入2
3
3
-1
25
-5
33
100
-78
56
63
-99
範例輸出2
Original:
[-1 25 -5]
[33 100 -78]
[56 63 -99]
Transpose:
[-1 33 56]
[25 100 63]
[-5 -78 -99]
作者:
may
時間:
2025-3-17 23:13
//#include <iostream>
//#include <vector>
#include <bits/stdc++.h>
using namespace std;
int main() {
// 讀取矩陣的列數與行數
int m, n;
cin >> m >> n;
// 建立原始矩陣 A
vector<vector<int>> A(m, vector<int>(n));
// 讀取矩陣元素
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> A[i][j];
}
}
// 輸出原始矩陣
cout << "Original:" << endl;
for (int i = 0; i < m; i++) {
cout << "[";
for (int j = 0; j < n; j++) {
cout << A[i][j];
if (j < n - 1) cout << " ";
}
cout << "]" << endl;
}
// 建立轉置矩陣 AT
vector<vector<int>> AT(n, vector<int>(m));
// 計算轉置矩陣
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
AT[j][i] = A[i][j];
}
}
// 輸出轉置矩陣
cout << "Transpose:" << endl;
for (int i = 0; i < n; i++) {
cout << "[";
for (int j = 0; j < m; j++) {
cout << AT[i][j];
if (j < m - 1) cout << " ";
}
cout << "]" << endl;
}
return 0;
}
複製代碼
回復
1#
may
-------------------------------------------------------------------------------
程式說明
輸入處理
先讀取矩陣的列數 m 和行數 n。
使用 vector<vector<int>> 建立一個 m x n 的二維陣列 A 來儲存原始矩陣數據。
使用兩層迴圈讀取 m * n 個整數並填入 A。
輸出原始矩陣
按照格式輸出,每列以 [ 和 ] 包圍,數字之間用空格隔開。
計算轉置矩陣
轉置後的矩陣大小為 n x m,使用 vector<vector<int>> 建立 AT 矩陣。
透過 AT[j]
= A
[j] 進行轉置。
輸出轉置矩陣
同樣按照格式輸出,每列以 [ 和 ] 包圍,數字之間用空格隔開。
------------------------------------------
測資:
測資 00(基礎測試:2×3 矩陣)
輸入
2
3
1
2
3
4
5
6
預期輸出
Original:
[1 2 3]
[4 5 6]
Transpose:
[1 4]
[2 5]
[3 6]
測資 01(正方形矩陣:3×3)
輸入
3
3
-1
25
-5
33
100
-78
56
63
-99
預期輸出
Original:
[-1 25 -5]
[33 100 -78]
[56 63 -99]
Transpose:
[-1 33 56]
[25 100 63]
[-5 -78 -99]
測資 02(單列矩陣:1×4)
輸入
1
4
8
3
7
2
預期輸出
Original:
[8 3 7 2]
Transpose:
[8]
[3]
[7]
[2]
測資 03(單行矩陣:4×1)
輸入
4
1
9
6
-2
4
預期輸出
Original:
[9]
[6]
[-2]
[4]
Transpose:
[9 6 -2 4]
測資 04(較大矩陣:3×4)
輸入
3
4
5
10
15
20
25
30
35
40
45
50
55
60
預期輸出
Original:
[5 10 15 20]
[25 30 35 40]
[45 50 55 60]
Transpose:
[5 25 45]
[10 30 50]
[15 35 55]
[20 40 60]
這些測資涵蓋:
一般情況(矩陣寬高不同)
正方形矩陣(測試轉置是否正確)
單列矩陣(轉置後變成單行矩陣)
單行矩陣(轉置後變成單列矩陣)
較大矩陣(測試較多數據)
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/)
Powered by Discuz! 7.2