Я написал двумерное вращение массива, которое работает отлично, однако у меня есть точка, которая ориентирована на одно место в массиве и отображает «!». вместо числа при отображении массива.Вращение 2D-массива и вращение точки в vb.net
Я думал, что если бы я проверил точку во время вращения массива, а затем изменил положение точки на новую позицию в массиве, то точка фокусировки затем вращалась бы с массивом, однако новое местоположение точки просто не совпадают с вращающейся точкой.
В этом примере я фокусируюсь на числе «5» (позиция 1,1) и всегда должен отображать «!». вместо «5».
Это вращение работает для фокуса 0,0, но не для других точек. Может ли кто-нибудь указать мне, что я делаю неправильно, и объяснить, почему логика не всегда работает?
Public Module Module1
Dim focalX As Integer = 1
Dim focalY As Integer = 1
Sub Main()
Dim src(,) As String =
{
{"1", "2", "3"},
{"4", "5", "6"},
{"7", "8", "9"},
{"0", "1", "2"}
}
ShowArray(src)
src = RotatedCW(src)
ShowArray(src)
src = RotatedCW(src)
ShowArray(src)
src = RotatedCW(src)
ShowArray(src)
Console.WriteLine()
Console.WriteLine("Press Enter to exit...")
Console.ReadLine()
End Sub
Sub ShowArray(src(,) As String)
Console.WriteLine(focalX & ", " & focalY)
For i = 0 To src.GetUpperBound(0)
For j = 0 To src.GetUpperBound(1)
If focalX = j And focalY = i Then
Console.Write("!" & " ")
Else
Console.Write(src(i, j) & " ")
End If
Next
Console.WriteLine()
Next
Console.WriteLine()
End Sub
Function RotatedCW(src(,) As String) As String(,)
Dim maxX As Integer = src.GetUpperBound(0)
Dim maxY As Integer = src.GetUpperBound(1)
Dim newArray(maxY, maxX) As String
For i = 0 To maxX
For j = 0 To maxY
newArray(j, maxX - i) = src(i, j)
If focalX = j And focalY = i Then
focalX = maxX - i
focalY = j
End If
Next
Next
Return newArray
End Function
End Module
Благодарим вас за это! Просто увидев, что вы наконец поняли, что я сделал неправильно, поставьте его в петлю, поэтому, когда он был повернут (правильно), и петли затем столкнулись с новым поворотным местом, он снова применил ту же математику, отправив ее где-то неожиданным. – Fozzedout