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
在上面的代码中,我们有一个4×5的矩阵,然后将其传递给名为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 步–使用reduction函数找到各列元素的总和。
第 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]
在上面的代码中,我们有一个4×4矩阵。然后创建一个以数组为参数的函数,并返回一个包含各列之和的数组。在这个函数中,创建一个空的一维数组来存储每一行的总和,并找到列元素的数量。然后外层for-in循环遍历每一列,对于每一列,reduce()函数遍历每一行的度量,并将矩阵的当前元素添加到相应的列和中。所以根据给定的矩阵,最终结果是[15, 18, 22, 14]。这里15是第0行元素的总和(1+4+7+3),18是第1行元素的总和(2+5+8+3),以此类推。
结论
这就是我们如何计算矩阵元素的列之和。这里使用for-in循环,我们可以计算任何类型的矩阵之和,如3×3,4×5,7×3等。而使用方法2,我们只能计算方形矩阵(行数等于列数)的总和。