【问题标题】:matrix in visual basicVisual Basic 中的矩阵
【发布时间】:2019-03-21 20:40:24
【问题描述】:

所以我有一个任务是创建一个方阵,然后从中返回行和列的平均值,虽然有一些问题

Dim m, n, i, j As Integer
        Dim A(2, 2) As Integer
        Console.Write(vbLf & "Enter The Matrix Elements any two : ")
        For i = 0 To 2 - 1
            For j = 0 To 2 = 1
                A(i, j) = Convert.ToInt16(Console.ReadLine())
            Next
        Next
        Console.Clear()
        Console.WriteLine(vbLf & "Matrix A : ")
        For i = 0 To 2 - 1
            For j = 0 To 2 - 1
                Console.Write(vbLf & "{0}", A(i, j))
            Next

            Console.WriteLine(" ")
        Next


        Console.WriteLine(vbLf & "Transpose Matrix : ")

        For i = 0 To 2 - 1
            For j = 0 To 2 - 1
                Console.Write(vbLf & "{0}", A(j, i))

            Next

            Console.WriteLine(" ")
        Next
    End Sub

这是我的代码,我知道它应该是一个方阵,所以我该怎么做从用户那里获取价值,或者有人可以帮助我

【问题讨论】:

  • For j = 0 To 2 = 1 是错字吗?
  • 你想要这个矩阵有多大?在vb中,下标是最后一项的索引,所以Dim A(2,2) As Integer实际上是一个3x3数组。
  • 另外,我看到了这个:For j = 0 To 2 = 1,这可能只是将代码移动到 Stack Overflow 的拼写错误,但肯定不是你想要的第二个 = 符号。
  • @JoelCoehoorn 我把这段代码给了某人,他们编辑了,我不知道为什么,基本上这就是我想要的,如果说它是 2x2 matix,则要求用户输入,数组中 4 个值的值,然后显示数组,值是 (a, b) (c, d) - 从这里我可以做平均值和其他事情,但它应该是一个二维数组所以真的困惑,也感谢您的帮助

标签: arrays vb.net matrix


【解决方案1】:

为了使其具有通用性,请使用GetUpperBound() 函数来确定数组中每个维度的元素数量(但是应该相同,因为您有一个方阵):

Sub Main()
    Dim size As Integer = 3
    Dim numberWidth As Integer = 2
    Dim format As String = "D" & numberWidth

    Dim A(size - 1, size - 1) As Integer
    For i As Integer = 0 To A.GetUpperBound(0)
        For j As Integer = 0 To A.GetUpperBound(1)
            Console.Write(String.Format("Enter The Matrix Element at A[Row {0}, Col {1}]: ", i, j))
            A(i, j) = Convert.ToInt16(Console.ReadLine())
        Next
    Next

    Console.WriteLine("Matrix A :")
    For i As Integer = 0 To A.GetUpperBound(0)
        Console.Write("| ")
        For j As Integer = 0 To A.GetUpperBound(1)
            Console.Write("{0} ", A(i, j).ToString(format))
        Next
        Console.WriteLine("|")
    Next

    Console.WriteLine("Transpose Matrix :")
    For i As Integer = 0 To A.GetUpperBound(0)
        Console.Write("| ")
        For j As Integer = 0 To A.GetUpperBound(1)
            Console.Write("{0} ", A(j, i).ToString(format))
        Next
        Console.WriteLine("|")
    Next
    Console.ReadLine()
End Sub

输出:

Enter The Matrix Element at A[Row 0, Col 0]: 1
Enter The Matrix Element at A[Row 0, Col 1]: 2
Enter The Matrix Element at A[Row 0, Col 2]: 3
Enter The Matrix Element at A[Row 1, Col 0]: 4
Enter The Matrix Element at A[Row 1, Col 1]: 5
Enter The Matrix Element at A[Row 1, Col 2]: 6
Enter The Matrix Element at A[Row 2, Col 0]: 7
Enter The Matrix Element at A[Row 2, Col 1]: 8
Enter The Matrix Element at A[Row 2, Col 2]: 9
Matrix A :
| 01 02 03 |
| 04 05 06 |
| 07 08 09 |
Transpose Matrix :
| 01 04 07 |
| 02 05 08 |
| 03 06 09 |

下面是一个如何计算每行的 SUM 的简单示例:

Dim Total as Integer
For row As Integer = 0 To A.GetUpperBound(0)
    Total = 0 ' reset for each row/column
    For col As Integer = 0 To A.GetUpperBound(1)
        Total = Total + A(row, col)            
    Next
    Console.WriteLine("Row " & row & " total: " & Total)
    ' ... do something else with "Total" here; like compute an average ...
Next

计算列总数的代码非常相似,只是交换了For rowFor col 行的位置。

【讨论】:

  • 太酷了兄弟,是的,在我的上一篇文章中了解了上限和下限,感谢您的解释,但是我将如何使用它来计算行和列总和,
  • 您可以使用已经为输出演示的相同嵌套 for 循环结构来计算每行的总和。您可以切换循环的行/列的顺序以获取列总和。一会儿我会发布一些东西,必须上路。
  • 是的,我必须计算平均值并想尝试一下,但是有一个问题,当我尝试输入此代码以查看它是否有效时,它不起作用只是出现错误跨度>
  • 嗯...帮帮我。我看不到你的屏幕(没有神奇的力量!);你遇到了什么错误?
  • 搞砸了,今天的平均数和今天的列数,谢谢兄弟的解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2018-04-02
  • 1970-01-01
相关资源
最近更新 更多