Форум: "Потрепаться";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
ВнизСурьёзеый вопрос на ентот раз. Найти похожие ветки
← →
Мазут Береговой © (2004-07-01 00:07) [0]Нужон алгоритм перевода двух мерного массива в дерево. Совсем тупить начал... целый день сижу и никак не выходит-то..
Ссылку или другое чё...
← →
KilkennyCat © (2004-07-01 00:29) [1]по каким критериям?
← →
QuasiLamo © (2004-07-01 00:39) [2]так чтоли
+
0000 |+0-0-0-0
0000 |+0-0-0-0
0000 ====> |+0-0-0-0
0000 |+0-0-0-0
0000 |+0-0-0-0
или я не понял?
← →
Мазут Береговой © (2004-07-01 01:06) [3]Вот примерно так:
Есть массив
A B2 C4 D1 E1
A B2 C4 D1 E2
A B1 C5 D2 E3
A B1 C5 D2 E4
A B1 C5 D2 E5 И надо сделать слева направо дерево.
Примерно так:A
B2
C4
D1
E1
E2
B1
C5
D2
E3
E4
E5
← →
Мазут Береговой © (2004-07-01 01:07) [4]Вот так понятней буде:
Есть массив
A B2 C4 D1 E1
A B2 C4 D1 E2
A B1 C5 D2 E3
A B1 C5 D2 E4
A B1 C5 D2 E5 И надо сделать слева направо дерево.
Примерно так:
A
B2
C4
D1
E1
E2
B1
C5
D2
E3
E4
E5
← →
jack128 © (2004-07-01 01:28) [5]Помоему так (пишу на псевдо коде..)
// предположим, что первый столбец - только один узел - корень
for col := 1 to Matr.ColCount - 1 do
begin
for row := 0 to Matr.RowCount - 1 do
begin
CurNode := Matr[col - 1, row];
CurNode.AddChild(MAtr[col, row]);
end;
end;
← →
KilkennyCat © (2004-07-01 01:35) [6]так же , псевдокодом :)
for col = Low to High do
for row = low to High do
if matr[col,row] <> matr[col, row-1] then новая ветка;
тут только первоначальный проход row-1 не совсем прокатит...
← →
jack128 © (2004-07-01 01:39) [7]вот нактал пример для TreeView.. Если б его еще оттестить..
var
CurNode: TTreeNode;
row, col: Integer;
begin
Tree.Items.Clear;
CurNode := Tree.Items.AddChild(nil, Matr[0,0]);
for col := 1 to Matr.ColCount - 1 do
begin
if Assigned(CurNode.Parent) then CurNode := CurNode.Parent.Item[0];
for row := 0 to Matr.RowCount - 1 do
begin
if Matr[col - 1, row] <> CurNode.Text then
CurNode := CurNode.Parent.Item[CurNode.Index + 1];
Tree.Items.AddChild(CurNode, Matr[col, row]);
end;
end;
end;
← →
jack128 © (2004-07-01 01:43) [8]
> if Assigned(CurNode.Parent) then CurNode := CurNode.Parent.Item[0];
заменить наif col > 1 then
CurNode := CurNode.Parent.Item[0].Item[0];
ps бредятина, но вроде должна работать..
← →
KilkennyCat © (2004-07-01 01:49) [9]А! я у себя забыл добавить возврат к корню...
> jack128 © (01.07.04 01:39) [7]
мне кажется, все таки удобней все сравнения делать внутри массива.
> Мазут Береговой ©
Есть гарантия, что массив всегда ниспадающий? Или возможен такой?
A B2 C4 D1 E1
A B2 C4 D1 E2
A B2 C5 D1 E2
A B1 C6 D2 E3
A B1 C6 D2 E4
A B1 C6 D2 E5
A
.B2
..C4
...D1
....E1
....E2
..С5
...D1
....E2
← →
Мазут Береговой © (2004-07-01 01:50) [10]Немного не так. У меня нет так контрола как дерево. Мне надо это все из ASP выкинуть в HTML. Хотя надо посмотреть...
Собственно я уже решил эту задачку.. :-)
Ну, все равно СПАСИБО всем.
А если есть желание, то можно продолжить эту тему. Может у кого еще есть интересные решения.
Мое в общем-то такое (за два прохода).
Обрабатываю сам массив.
1.Читаю сверху вниз каждую колонку и очищаю одинковые ячейки, оставляя верхнюю и проверяя левую, если левая не пустая, то ячейку не очищать.
2. Прохожу сверху вниз ряды и если есть значение в одной из я чеек выкидываю ее в отдельный ряд, чтоб иерархия получилась.
Грубовато наверное, но работает.. :-)
← →
iZEN © (2004-07-01 01:53) [11]У меня был рекурсивный алгоритм со строками в массиве (дерево нужно было строить). Лет пять назад написал (придётся искать в архивах).
Нужно?
← →
Мазут Береговой © (2004-07-01 01:56) [12]Можете посмотреть здесь пример мой:
http://www.moultonordervision.com/test.asp
← →
Мазут Береговой © (2004-07-01 01:58) [13]
> iZEN © (01.07.04 01:53) [11]
Не стоит наверное, коли далеко спрятал..
← →
Мазут Береговой © (2004-07-01 02:26) [14]Вот нашел tree view на Javascript:
http://prdownloads.sourceforge.net/nanotree/nanotree.zip?use_mirror=voxel
Щас буду "выпендриваться"... :-))
← →
iZEN © (2004-07-01 02:40) [15]to Мазут Береговой © (01.07.04 02:26) [14].
А что за проекты (Ваш и тот, который на sourceforge.net), если не секрет?
← →
Мазут Береговой © (2004-07-01 03:02) [16]
> iZEN © (01.07.04 02:40) [15]
Да мне надо report сделать - одна WEB-page визуализацию сборочных едениц...
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.037 c