Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tehnolog
0 / 0 / 0
Регистрация: 12.08.2012
Сообщений: 4
#1

Вывести список в дерева - C++

12.08.2012, 10:02. Просмотров 789. Ответов 4
Метки нет (Все метки)

Новичок в программировании, дали задание в универе. Вот само задание:

Дан структурированный многострочный текстовый фай, где каждая строка имеет формат:
Код#Текст#Код родителя <ПС>
где:
-«Код» - число (не более 6 цифр);
-«#» - знак-разделитель;
-«Текст» - не более 50 знаков, кроме «#»;
-«Код родителя»-число-код предшествующей строки;
-«<ПС>»-знак перевода строки.

В тексте все строки связаны между собой через код родителя. В данных текста заложено некоторое «дерево» информации с произвольным количеством «ветвей» (уровней).

1 # 1.Материалы #
2 # 1.1.Группа 1 # 1
3 # 1.1.1.Материал 1 # 2
4 # 1.1.2 Материал 2 # 2
5 # 1.1.3 Материал 3 # 2
6 # 1.1.4 Материал 4 # 2
7 # 1.2.Группа 2 # 1
8 # 1.2.1.Материал 5 # 7
9 # 1.2.2 Материал 6 # 7
10 # 2.Комплектующие #
11 # 2.1.КомГруппа1 # 10
12 # 2.1.1.Комплект 1 # 11
13 # 2.1.2 .Комплект 2 # 11
14 # 2.1.3 ПодКомГруппа 11
15 # 2.1.3.1 Комплект 3# 14
16 # 2.1.3.2 Комплект 4 14
17 # 2.2 КомГруппа 2 # 10
18 # 2.2.1 Комплект 5 # 17
19 # 2.2.2 Комплект 6 # 17

Разработать программный модуль, реализующий графическое отображение структуры данных, позволяющее на экране раскрывать и закрывать отдельные «ветви дерева» в соответствии с примером

-1.Материалы
-1.1.Группа 1
1.1.1.Материал 1
1.1.2 Материал 2
1.1.3 Материал 3
1.1.4 Материал 4
+1.2.Группа 2
+2.Комплектующие

Не знаю как подступиться к заданию, с графикой до этого не сталкивался, получилось только создать кнопку выбора текстового файла,возвращающую полный путь с именем и расширением.
Как можно считать содержимое этого файла?
Я думаю здесь нужно control tree использовать, но как я не понимаю!
Помогите советом, направьте на путь истинный) Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2012, 10:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести список в дерева (C++):

Как сделать односвязный список в узле дерева - C++
Ребят подскажите, пожалуйста, как сделать односвязный список в узле дерева? Нужно написать программу учета нарушений ПДД. Для каждого...

Удаление дерева (помещение всех его элементов в список свободного пространства) - C++
Удаление дерева, т.е. помещение всех его элементов в список свободного пространства....нужна помошь

Вводится число N. Создать список его делителей и вывести список на экран - C++
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; using namespace std; struct...

Упорядочить список студентов по среднему баллу и вывести весь список - C++
форумчане,выдает ошибку :( столько маюсь с задачей уже #include &lt;vcl.h&gt; #include &lt;stdio.h&gt; #pragma hdrstop /*Упорядочить список...

Вывести все вершины двоичного дерева - C++
Двоичное дерево задано в виде: m,g],s,y]] Как с помощью стека вывести это на экран? Набросайте, кому не трудно алгоритм) просто...

Как вывести на экран в виде дерева, а не в строку? - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;cstring&gt; #include &lt;conio.h&gt; using namespace std; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Neon-z
46 / 41 / 1
Регистрация: 06.09.2010
Сообщений: 419
12.08.2012, 13:43 #2
Если тебе нужно графическое приложение, то лично я бы делал через TreeView. Ты анализируешь файл, а потом последовательно запихиваешь элементы в тривиев. Задачка не очень сложная ( для меня будет самым сложным правильно разобрать текст), но требует время.
1
tehnolog
0 / 0 / 0
Регистрация: 12.08.2012
Сообщений: 4
12.08.2012, 18:11  [ТС] #3
спасибо за совет, это как раз то, что нужно!
а что с текстовиком делать, как его разложить?
0
Neon-z
46 / 41 / 1
Регистрация: 06.09.2010
Сообщений: 419
12.08.2012, 19:43 #4
Считываешь его построчно, и анализируешь (не зря тебе даны разделительные знаки).
Алгоритм приблиз такой:
1. Берешь первую строку и записываешь в отдельную переменную.
2. сканируешь строку до первого разделителя и записываешь ее в переменную.
3. удаляешь все что до разделителя и сам разделитель и повторяешь шаг два. (для каждого поля своя переменная.
4. А потом полученные данные распихиваешь по тривиеву.
И так с каждой строкой.
Я считаю, что лучше делать массив этих данных (строчка соответствует номеру элемента в массиве).
Это так, алгоритм на скорую руку)) если подумать, можно еще что-то придумать).
0
sparks0603
Сообщений: n/a
05.02.2013, 17:23 #5
если у кого есть уже решенное это задание скиньте пожалуйста, буду очень благодарен, дали точно такое же задание

Добавлено через 41 минуту
tehnolog, выручай скинь, если ты уже делал, очень надо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2013, 17:23
Привет! Вот еще темы с ответами:

Как вывести все листья бинарного дерева? - C++
имеется Б-дерево. Как вывести все листья? class B_tree { public: B_tree(); B_tree(int amount, ...); void DeleteAllTree();...

Вывести разность значений всех листьев бинарного дерева - C++
Дан указатель P1 на корень непустого дерева. Вывести разность значений всех листьев данного дерева. что делать в этом задании?

Вывести список спортсменов моложе 25 лет, чей вес превышает 70 килограмм. Вывести отдельно мужчин и женщин - C++
Здравствуйте, помогите, пожалуйста. Составить список участников соревнований из 10 человек с заданным структурным типом. Вывести список в...

Вывести количество вершин дерева, являющихся левыми дочерними вершинами - C++
Дан указатель P на корень непустого дерева. Вывести количество вершин дерева, являющихся левыми дочерними вершинами(корень дерева не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.02.2013, 17:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru