Generovani stromecku (Tree) abecedne serazeneho   otázka

VB.NET

Predstavte si, ze mam nesetridene vicedimenzionalni pole a potreboval bych ho dostat do tzv. stromecku Tree (Tree Node).

uloha je takova:

Z techto dat, ktera jsou ulozena v poli, vygenerovat stromecek, ktery bude abecedne serazen a bude mit dane podurovne.

index pole - zeme - lokalita - nazev hotelu

zminovane pole:0 Rakousko U jezera Hotel Pramen

1 Francie V udoli Hotel Viola

2 Slovensko V dire Penzion Branik

3 Rakousko U jezera Hotel Delo

4 Francie Pod udolim Penzion Nikoho

5 Slovensko U dire Hotel Noc

6 Slovensko Nad dirou Hotel Blbec

7 Rakousko U jezera Hotel Zajic

8 Rakousko Pod mostem Penzion Pes

9 Rakousko Nad mostem Hotel Slunce

10 Francie Nad udolim Hotel Modry

Dekuji Vam za odpoved, pripadne jeste vice za napsany navod (ci kod).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud jde o obecný postup, stačí procházet pole po řádcích a pokud ještě neexistuje daná TreeNode s konkrétním státem, tak ji vytvořit a zbytek řádku přidat pod ní. Kód by vypadal třeba takto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Dim pole(,) As String = {{"0", "Rakousko", "U jezera", "Hotel Pramen"}, _
    {"1", "Francie", "V udoli", "Hotel Viola"}, _
    {"2", "Slovensko", "V dire", "Penzion Branik"}, _
    {"3", "Rakousko", "U jezera", "Hotel Delo "}, _
    {"4", "Francie", "Pod udolim", "Penzion Nikoho "}, _
    {"5", "Slovensko", "U dire", "Hotel Noc "}, _
    {"6", "Slovensko", "Nad dirou", "Hotel Blbec "}, _
    {"7", "Rakousko", "U jezera", "Hotel Zajic "}, _
    {"8", "Rakousko", "Pod mostem", "Penzion Pes "}, _
    {"9", "Rakousko", "Nad mostem", "Hotel Slunce "}, _
    {"10", "Francie", "Nad udolim", "Hotel Modry"}}
 
For i As Integer = 0 To pole.GetLength(0) - 1   'projít všechny řádky
 
    Dim n As TreeNode
 
    'zkusit najít stát a uložit ho do n
    Dim f() As TreeNode = TreeView1.Nodes.Find(pole(i, 1), False)
    If f.Length = 0 Then   'pokud ještě ve stromečku daný stát není, přidáme ho
        n = TreeView1.Nodes.Add(pole(i, 1), pole(i, 1))
    Else
        n = f(0)   'stát existuje, přiřadíme ho do n
    End If
 
    'zkusit najít lokalitu a uložit ji do n
    f = n.Nodes.Find(pole(i, 2), False)
    If f.Length = 0 Then    'pokud ještě lokalita ve stromečku není, přidáme ji
        n = n.Nodes.Add(pole(i, 2), pole(i, 2))
    Else
        n = f(0)   'lokalita existuje, přiřadíme ho do n
    End If
 
    'přidat hotel do lokality a poznamenat si k němu index
    n.Nodes.Add(pole(i, 0), pole(i, 3))
Next

Všimněte si hlavně metody Nodes.Find, která najde položku s daným klíčem (druhý parametr říká, že se má procházet jen aktuální úroveň a ne celý podstrom) a metody Nodes.Add, která přidá položku s daným klíčem a textem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback