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

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

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

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

12.08.2012, 10:02. Просмотров 817. Ответов 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; ...

4
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
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 1
05.02.2013, 17:23 #5
если у кого есть уже решенное это задание скиньте пожалуйста, буду очень благодарен, дали точно такое же задание

Добавлено через 41 минуту
tehnolog, выручай скинь, если ты уже делал, очень надо
0
05.02.2013, 17:23
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 на корень непустого дерева. Вывести количество вершин дерева, являющихся левыми дочерними вершинами(корень дерева не...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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