Swift程式計算矩陣列元素之和


矩陣是按行和列排列數字的排列。矩陣可以是各種型別,例如正方形、水平、垂直等。

在本文中,我們將學習如何編寫一個 Swift 程式來計算矩陣元素列的總和。這裡我們使用以下方法來查詢列元素的總和:

  • 使用巢狀 for-in 迴圈

  • 使用內建函式

方法 1:使用巢狀 for-in 迴圈

這裡我們使用巢狀 for-in 迴圈來查詢矩陣元素列的總和。

演算法

步驟 1 - 建立一個函式。

步驟 2 - 建立一個名為 sum 的變數來儲存總和。sum 的初始值為 0。

步驟 3 - 查詢行數和列數。

步驟 4 - 執行巢狀 for-in 迴圈以遍歷每一行和每一列。

步驟 5 - 在此巢狀迴圈中,按列新增元素並將結果儲存到 sum 變數中。

步驟 6 - 在每一列之後,將 sum 的值重置為 0 以計算下一列元素的總和。

步驟 7 - 建立一個矩陣並將其傳遞到函式中。

步驟 8 - 列印輸出。

示例

以下 Swift 程式計算矩陣元素列的總和。

import Foundation
import Glibc

// Function to find the sum of each column of a matrix
func columnElementsSum(matrix: [[Int]]) {
   var sum = 0
   let noRow = matrix.count
   let noColumn = matrix[0].count

   for C in 0..<noColumn {
      for R in 0..<noRow {
         sum += matrix[R][C]
      }
      print("Sum of Column \(C) = \(sum)")
      sum = 0
   } 
}

// Input 4x5 matrix
let M = [[1, 2, 2, 5, 2], [1, 1, 6, 3, 6], [7, 8, 3, 0, 1], [2, 4, 2, 7, 1]]
print("Matrix is:")
for x in 0..<M.count {
   for y in 0..<M[0].count {
      print(M[x][y], terminator:" ")
   }
   print("\n")
}

// Calling function
columnElementsSum(matrix: M)

輸出

Matrix is:
1 2 2 5 2
1 1 6 3 6
7 8 3 0 1
2 4 2 7 1
Sum of Column 0 = 11
Sum of Column 1 = 15
Sum of Column 2 = 13
Sum of Column 3 = 15
Sum of Column 4 = 10

在上面的程式碼中,我們有一個 4x5 矩陣,然後將其傳遞到名為 columnElementsSum() 的函式中以查詢矩陣的列元素的總和。在此函式中,我們使用巢狀 for 迴圈來遍歷輸入矩陣的每個元素,然後將其新增到相應的列總和中。完成巢狀 for 迴圈後,此函式將列印各個列的總和,即列 0 = 11,列 1 = 15,列 2 = 13 等(根據輸入矩陣)。

方法 2:使用內建函式

為了找到給定矩陣元素的行總和,我們使用 reduce(_:_:) 函式。此函式透過使用給定的閉包組合陣列或任何序列的元素來返回結果。

語法

func reduce(_initial: Value, _next: Value)

這裡,initial 表示用作初始累積值的值。它在第一次執行閉包時傳遞給下一個。而 next 表示一個閉包,它將累積值和陣列的一個元素組合成一個新的累積值,該值將進一步用於 next 閉包的後續呼叫或返回給呼叫方。

演算法

步驟 1 - 建立一個函式。

步驟 2 - 查詢列數。

步驟 3 - 建立一個一維陣列來儲存列的總和。

步驟 4 - 執行 for 迴圈以遍歷每一列。

步驟 5 - 使用 reduce 函式查詢列元素的總和。

步驟 6 - 現在使用 + 運算子函式將每行的總和儲存在陣列中。

步驟 7 - 返回結果陣列。

步驟 8 - 建立一個矩陣並將其傳遞到函式中。

步驟 9 - 列印輸出。

示例

以下 Swift 程式計算矩陣元素行的總和。

import Foundation
import Glibc

// Function to find sum of columns of matrix elements.
func ColumnSum(matrix: [[Int]]) -> [Int] {
   let col = matrix[0].count
   var colSum = Array(repeating: 0, count: col)

   for C in 0..<col {
      colSum[C] = matrix.reduce(0) { (res, row) -> Int in
         return res + row[C]
      }
   }
   return colSum
}

// 4x4 matrix
let M = [[1, 2, 3, 1],
   [4, 5, 6, 3],
   [7, 8, 9, 5],
   [3, 3, 4, 5]]

// Displaying matrix
print("Matrix is:", M)
let output = ColumnSum(matrix: M)
print("Sum of the columns are:", output)

輸出

Matrix is: [[1, 2, 3, 1], [4, 5, 6, 3], [7, 8, 9, 5], [3, 3, 4, 5]]
Sum of the columns are: [15, 18, 22, 14]

在上面的程式碼中,我們有一個 4x4 矩陣。然後建立一個函式,該函式以陣列作為引數並返回一個包含每列總和的總和的陣列。在此函式中,建立一個空的 1 維陣列來儲存每行的總和並查詢列元素計數。然後外部 for-in 迴圈遍歷每一列,對於每一列,reduce() 函式遍歷矩陣的每一行並將矩陣的當前元素新增到相應的列總和中。因此,根據給定的矩陣,最終結果為 [15, 18, 22, 14]。這裡 15 是行 0 元素的總和 (1+4+7+3),18 是行 1 元素的總和 (2+5+8+3) 等等。

結論

因此,這就是我們如何計算矩陣元素列的總和。這裡使用 for-in 迴圈,我們可以計算任何型別矩陣的總和,例如 3x3、4x5、7x3 等。而使用方法 2,我們只能計算正方形矩陣的總和(其中行數等於列數)。

更新於: 2023年2月16日

494 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.