计算矩阵对角线之和的Swift程序
在这篇文章中,我们将学习如何编写一个Swift程序来计算矩阵的对角线之和。每个矩阵都有两条对角线,被称为主对角线和次对角线。例如,我们有一个5×5的正方形矩阵–
2 3 4 5 6
4 6 7 8 9
1 1 1 3 4
4 0 4 0 4
0 0 1 1 1
所以主对角线是由元素2,6,1,0,1形成的,次对角线是由元素6,8,1,0,0形成的。 因此,两个对角线的总和是-
Primary diagonal = 2+6+1+0+1 = 10
Secondary diagonal = 6+8+1+0+0 = 15
- 使用for循环
-
使用嵌套for-loop
方法1:使用For Loop
要计算一个矩阵的两条对角线之和,我们可以使用一个单一的for循环。
算法
- 第1步 – 创建一个函数。
-
第2步 – 在这个函数中,运行一个for循环,遍历给定矩阵的每个元素
-
第3步–找到主对角线的总和–
leftDiagonal += arr[x][x]
- 第4步–寻找次要对角线的总和–
rightDiagonal += arr[x][size - x - 1]
-
第5步 – 创建一个矩阵。
-
第6步 – 调用该函数并将矩阵传给它。
-
第7步 – 打印输出。
示例
以下是使用for循环计算矩阵对角线之和的Swift程序。
import Foundation
import Glibc
// Size of the array
var size = 4
// Function to find the sum of the diagonals
func diagonalSum(arr:[[Int]]){
var leftDiagonal = 0
var rightDiagonal = 0
for x in 0..<size{
// Find the sum of left diagonal
leftDiagonal += arr[x][x]
// Find the sum of left diagonal
rightDiagonal += arr[x][size - x - 1]
}
print("Sum of left diagonal", leftDiagonal)
print("Sum of right diagonal", rightDiagonal)
}
// Creating 4x4 matrix of integer type
var myArray : [[Int]] = [[2, 3, 4, 3],
[5, 6, 7, 1],
[8, 3, 2, 6],
[4, 6, 4, 2]]
print("Array:")
for x in 0..<size{
for y in 0..<size{
print(myArray[x][y], terminator:" ")
}
print("\n")
}
diagonalSum(arr:myArray)
输出
Array:
2 3 4 3
5 6 7 1
8 3 2 6
4 6 4 2
Sum of left diagonal 12
Sum of right diagonal 17
在上面的代码中,我们有一个整数类型的矩阵。现在我们创建一个函数来寻找给定矩阵的两条对角线之和。在这个函数中,我们运行一个for循环,遍历给定矩阵的每个元素,然后找到主对角线和次对角线的总和。
方法2:使用嵌套的For Loop
我们也可以用嵌套的for循环找到矩阵的主对角线和次对角线之和。
算法
- 第1步 – 创建一个函数。
-
第2步 – 在这个函数中,运行一个嵌套的for循环来迭代给定矩阵的每一行和每一列。
-
第3步 – 找到主对角线,然后将其元素相加 –
if (x == y){
leftDiagonal += mxt[x][y]
}
- 第4步 – 找到次要的对角线,然后加上它的元素——
if ((x + y) == (size - 1)){
rightDiagonal += mxt[x][y]
}
-
第5步 – 创建一个矩阵。
-
第6步 – 调用该函数并将矩阵传给它。
-
第7步 – 打印输出。
示例
以下是Swift程序,使用嵌套for循环计算矩阵的对角线之和。
import Foundation
import Glibc
// Size of the array
var size = 3
// Function to find the sum of the diagonals
func diagonalSum(mxt:[[Int]]){
var leftDiagonal = 0
var rightDiagonal = 0
for x in 0..<size{
for y in 0..<size{
// Find the sum of left diagonal
if (x == y)
{
leftDiagonal += mxt[x][y]
}
// Find the sum of left diagonal
if ((x + y) == (size - 1))
{
rightDiagonal += mxt[x][y]
}
}
}
print("Sum of left diagonal:", leftDiagonal)
print("Sum of right diagonal:", rightDiagonal)
}
// Creating 3x3 matrix of integer type
var matrix : [[Int]] = [[1, 3, 40], [2, 16, 7], [10, 3, 12]]
print("Matrix:")
for x in 0..<size{
for y in 0..<size{
print(matrix[x][y], terminator:" ")
}
print("\n")
}
// Calling the function
diagonalSum(mxt:matrix)
输出
Matrix:
1 3 40
2 16 7
10 3 12
Sum of left diagonal: 29
Sum of right diagonal: 66
在上面的代码中,我们有一个整数类型的3×3矩阵。现在我们创建一个函数来寻找给定矩阵的两条对角线之和。在这个函数中,我们运行一个嵌套循环,遍历给定矩阵的每一行和每一列。现在我们使用行-列条件找到主对角线–行=列。然后将主对角线上的元素相加。使用行-列条件找到次要对角线:行=无行-列-1。然后再加上次要对角线的元素。
结论
正方形矩阵有两条对角线,主对角线(从右到左)和次对角线(从左到右)的长度相等。因此,我们可以使用嵌套或单个for循环来计算矩阵的对角线之和。