Nechápu sice smysl Vašeho počínání, ale máte-li nadeklarované pole je jeho vyplnění pouze otázkou vhodné funkce, která projde všechny prvky Vašeho pole Vámi vymyšlenou cestou. Nevím, co si od toho slibujete, proto je těžké něco i navrhnout. Třeba ta "dostředná spirála" by se dala celkem "jednoduše" algoritmizovat, ostatní možnosti jsou pouze otázkou Vaší představivosti. Ta spirála by mohla vypadat třeba nějak takto:
Public Class Form7
Private pole(10, 10) As Integer
Private Sub Form7_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim rmin, rmax, slmin, slmax, num As Integer
rmax = pole.GetLength(1) - 1
slmax = pole.GetLength(0) - 1
Do While True
For i As Integer = slmin To slmax
num += 1
pole(i, rmin) = num
Next
rmin += 1
If rmax < rmin Then Exit Do
For j As Integer = rmin To rmax
num += 1
pole(slmax, j) = num
Next
slmax -= 1
If slmax < slmin Then Exit Do
For i As Integer = slmax To slmin Step -1
num += 1
pole(i, rmax) = num
Next
rmax -= 1
If rmax < rmin Then Exit Do
For j As Integer = rmax To rmin Step -1
num += 1
pole(slmin, j) = num
Next
slmin += 1
If slmax < slmin Then Exit Do
Loop
'' kontrolní výpis
'' na ploše textbox1 s nastavením MultiLine= true
With TextBox1
.Text = ""
For j As Integer = 0 To pole.GetLength(1) - 1
For i As Integer = 0 To pole.GetLength(0) - 1
.Text &= pole(i, j) & vbTab
Next
.Text &= vbNewLine
Next
End With
End Sub
End Class
Toto je přístup, kdy řídíte posloupnost procházených prvků a plníte je daty. Další možností by byl postup opačný, kdy byste pole sice plnil klasicky (po řádcích a sloupcích), ale pro každý prvek byste počítal jeho hodnotu jako funkci závislou na souřadnicích (třeba "vzdálenost od středu"). Např.:
Public Class Form7
Private pole(10, 10) As Integer
Private Sub Form7_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim pulx = (pole.GetLength(0) - 1) / 2
Dim puly = (pole.GetLength(1) - 1) / 2
For j As Integer = 0 To pole.GetLength(1) - 1
For i As Integer = 0 To pole.GetLength(0) - 1
pole(i, j) = CInt(Math.Sqrt((i - pulx) * (i - pulx) + (j - puly) * (j - puly)))
Next
Next
'' kontrolní výpis
'' na ploše textbox1 s nastavením MultiLine= true
With TextBox1
.Text = ""
For j As Integer = 0 To pole.GetLength(1) - 1
For i As Integer = 0 To pole.GetLength(0) - 1
.Text &= pole(i, j) & vbTab
Next
.Text &= vbNewLine
Next
End With
End Sub
End Class
|