Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Заполнение дерева значений

Заполнение дерева значений
Я
   MMMan
 
16.09.21 - 12:18
Я еще в школе так что строго не судите)

Для решения некоторой задачи требуется заполнить дерево значений случайными значениями.
Процедура рекурсивная, в параметр подается ДеревоЗначений(ну или СтрокаДереваЗначений) и Глубина - число, означающее насколько длинная должна получиться иерархия.

Код, который я написал

Процедура ЗаполнитьГраф(ТекущийУзел, Знач Глубина)
    
  ГСЧ = Новый ГенераторСлучайныхЧисел();
  Глубина = Глубина - 1;
    
  Если НЕ Глубина > 0 Тогда
    Возврат;
  КонецЕсли;
    
  Для Каждого Узел Из ТекущийУзел.Строки Цикл
            
  Для Счетчик = 1 По 2 Цикл                
    НовыйУзел = Узел.Строки.Добавить();
    НовыйУзел.Значение = ГСЧ.СлучайноеЧисло(1, 100);        
    ЗаполнитьГраф(Узел, Глубина);                
  КонецЦикла;
            
КонецЦикла;
        
КонецПроцедуры

Вывод должен быть следующего вида(Глубина = 3)

3      3
2    2   4
1  2  3 4  6

Что же происходит не так, если вывод происходит в таком виде? В чем ошибка?

3         6
2      2      3
1   2 3 2 3  4 5
   Дремучий
 
1 - 16.09.21 - 12:45
Чтобы лучше разобраться, что происходит, нужно добавить в процедуру счетчик, который будет всегда увеличиваться на единицу, отражая номер шага.
Процедура ЗаполнитьГраф(ТекущийУзел, Знач Глубина, НомерШага)
    ...
    НовыйУзел.Значение = НомерШага;
    НомерШага = НомерШага + 1;
    ЗаполнитьГраф(Узел, Глубина, НомерШага);
    ...
КонецПроцедуры

Скорее всего неправильно организована проверка на глубину вложенности, думаю она срабатывает (а не должна) на добавлении второй ветки на том же уровне вложенности.
   MMMan
 
2 - 16.09.21 - 13:06
Да, вижу. Дело в глубине.

3               0

2       83            71

1   83 71 83 71    80    15

Додумал вывести себе как шел код. В отладчике, пока что, для меня как-то непонятно:
Значение: 83 Счетчик: 1 Глубина: 1
Значение: 71 Счетчик: 2 Глубина: 1
Значение: 83 Счетчик: 1 Глубина: 2
Значение: 83 Счетчик: 1 Глубина: 1
Значение: 71 Счетчик: 2 Глубина: 1
Значение: 80 Счетчик: 1 Глубина: 1
Значение: 15 Счетчик: 2 Глубина: 1
Значение: 71 Счетчик: 2 Глубина: 2
   Веселый собака
 
3 - 16.09.21 - 13:30
(0) а тупо вывести в табличное поле и увидеть наглядно? )
   Kassern
 
4 - 16.09.21 - 13:33
(0) уже со школьной скамьи 1ску изучают?
   1Сергей
 
5 - 16.09.21 - 13:37
(4) ничего удивительного
   MMMan
 
6 - 16.09.21 - 13:39
(3) А я и не додумался! Да, удобнее для глаза, но вот смысл в этом)))
(4) Неа, у нас паскаль там в школе и то на уровне простых циклов. Я типо проекта делаю
   Kassern
 
7 - 16.09.21 - 14:08
(6) а к 1ске то как пришел?
   Веселый собака
 
8 - 16.09.21 - 14:13
(7) наверно папа 1сник укусил.
   MMMan
 
9 - 16.09.21 - 14:27
(7) (8) Да ладно вам! Тут же вот справочники, документы, формы все эти. Все на своем месте, все как надо. Все по порядку. Красиво
   Веселый собака
 
10 - 16.09.21 - 14:29
(9) молод ты еще в это.. наступать.
Лучше яву там учи какую, будешь свободный птиц- по миру кататься, под пальмами кодить.

Это наша, стариковская ниша.
   Kassern
 
11 - 16.09.21 - 14:31
(10) да ладно вам, пускай молодое поколение подрастает. Итак с кадрами большие проблемы
   ДенисЧ
 
12 - 16.09.21 - 14:42
(11) С кадрами проблемы нет. Вот без кадров...
   ДенисЧ
 
13 - 16.09.21 - 14:43
(10) "Лучше яву там учи какую"
Что тебе этот молодой человек сделал плохого?

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.