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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告