# 找出矩陣中第二大的數字

找出矩陣中第二大的數字
#include <iostream>
#include <vector>
#include <climits> // 包含 INT_MIN 的定義
using namespace std;
int findSecondLargest(const vector<vector<int>>& matrix) {
    int largest = INT_MIN; // 最大數字
    int secondLargest = INT_MIN; // 第二大數字
    // 遍歷矩陣,找出最大數字和第二大數字
    for (const auto& row : matrix) {
        for (int num : row) {
            if (num > largest) {
                secondLargest = largest;
                largest = num;
            } else if (num > secondLargest && num < largest) {
                secondLargest = num;
            }
        }
    }
    return secondLargest;
}
int main() {
    // 定義矩陣
    vector<vector<int>> matrix = {
        {4, 5, 6},
        {7, 10, 9},
        {2, 8, 3}
    };
    // 呼叫函式找出第二大的數字
    int secondLargest = findSecondLargest(matrix);
    // 輸出結果
    if (secondLargest != INT_MIN) {
        cout << "矩陣中第二大的數字為: " << secondLargest << endl;
    } else {
        cout << "矩陣中沒有第二大的數字" << endl;
    }
    return 0;
}

# 轉置矩陣

轉置矩陣
#include <iostream>
using namespace std;
const int MAX_SIZE = 100;  // 定義矩陣的最大大小
void transposeMatrix(int matrix[][MAX_SIZE], int rows, int cols) {
    int transposedMatrix[MAX_SIZE][MAX_SIZE];  // 用於儲存轉置後的矩陣
    // 轉置矩陣
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            transposedMatrix[j][i] = matrix[i][j];
        }
    }
    // 列印轉置後的矩陣
    cout << "轉置矩陣:" << endl;
    for (int i = 0; i < cols; i++) {
        for (int j = 0; j < rows; j++) {
            cout << transposedMatrix[i][j] << " ";
        }
        cout << endl;
    }
}
int main() {
    int matrix[MAX_SIZE][MAX_SIZE];  // 定義原始矩陣
    int rows, cols;  // 矩陣的行數和列數
    // 輸入矩陣的行數和列數
    cout << "請輸入矩陣的行數:";
    cin >> rows;
    cout << "請輸入矩陣的列數:";
    cin >> cols;
    // 輸入矩陣元素
    cout << "請輸入矩陣的元素:" << endl;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            cin >> matrix[i][j];
        }
    }
    // 計算並列印轉置矩陣
    transposeMatrix(matrix, rows, cols);
    return 0;
}

# 兩個矩陣相乘

兩個矩陣相乘
#include <iostream>
#include <vector>
using namespace std;
// 函式:矩陣相乘
vector<vector<int>> matrixMultiply(const vector<vector<int>>& matrix1, const vector<vector<int>>& matrix2) {
    int rows1 = matrix1.size();    // 矩陣 1 的列數
    int cols1 = matrix1[0].size(); // 矩陣 1 的行數(矩陣 2 的列數)
    int rows2 = matrix2.size();    // 矩陣 2 的列數
    int cols2 = matrix2[0].size(); // 矩陣 2 的行數
    // 檢查矩陣是否可以相乘
    if (cols1 != rows2) {
        cout << "矩陣的尺寸不符合乘法規則" << endl;
        return vector<vector<int>>();
    }
    // 建立結果矩陣,初始化為全 0
    vector<vector<int>> result(rows1, vector<int>(cols2, 0));
    // 進行矩陣相乘運算
    for (int i = 0; i < rows1; i++) {
        for (int j = 0; j < cols2; j++) {
            for (int k = 0; k < cols1; k++) {
                result[i][j] += matrix1[i][k] * matrix2[k][j];
            }
        }
    }
    return result;
}
int main() {
    // 定義兩個矩陣
    vector<vector<int>> matrix1 = <!--swig0-->;
    vector<vector<int>> matrix2 = <!--swig1-->;
    // 呼叫矩陣相乘函式
    vector<vector<int>> result = matrixMultiply(matrix1, matrix2);
    // 輸出結果矩陣
    cout << "矩陣相乘的結果:" << endl;
    for (const auto& row : result) {
        for (const auto& element : row) {
            cout << element << " ";
        }
        cout << endl;
    }
    return 0;
}

# 矩陣乘向量

矩陣乘向量
#include <iostream>
#include <vector>
using namespace std;
// 計算矩陣與向量的乘積
vector<double> matrixVectorMultiply(const vector<vector<double>>& matrix, const vector<double>& vector) {
    int rows = matrix.size();
    int cols = matrix[0].size();
    // 檢查矩陣與向量的尺寸是否符合乘法規則
    if (cols != vector.size()) {
        cout << "矩陣與向量的尺寸不符合乘法規則" << endl;
        return vector<double>();
    }
    // 創建結果向量,初始化為零
    vector<double> result(rows, 0.0);
    // 進行矩陣與向量的乘法
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            result[i] += matrix[i][j] * vector[j];
        }
    }
    return result;
}
// 測試程式碼
int main() {
    // 定義矩陣
    vector<vector<double>> matrix = <!--swig2-->;
    // 定義向量
    vector<double> vector = {1, 2, 3};
    // 計算矩陣與向量的乘積
    vector<double> result = matrixVectorMultiply(matrix, vector);
    // 輸出結果
    cout << "乘積結果:";
    for (double value : result) {
        cout << value << " ";
    }
    cout << endl;
    return 0;
}