Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Бинарное дерево 
:(
    Опции темы
eppi
Дата 16.6.2015, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.11.2013

Репутация: нет
Всего: нет



Друзья, помогите реализовать задачу в виде бинарного дерева:
    
Оператор мобильной связи организовал базу данных абонентов, содержащую сведения о телефонах, их владельцах и используемых тарифах, в виде бинарного дерева. 

Составьте программу, которая:
o    обеспечивает начальное формирование базы данных в виде бинарного дерева;
o    производит вывод всей базы данных;
o    производит поиск владельца по номеру телефона;
o    выводит наиболее востребованный тариф (по наибольшему числу абонентов).

Заранее огромное спасибо !!!  smile 
PM MAIL   Вверх
bsa
Дата 16.6.2015, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 
PM   Вверх
rudolfninja
Дата 17.6.2015, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: 3
Всего: 6



Привет.
Не вижу смысла использовать тут бинарное дерево.
Наверное, бинарное дерево поможет быстрее найти только номер телефона, а вот самый востребованный тариф...я бы искал по другому. Например, создал перечисление тарифов и массив, в котором индексами будут элементы перечисления, а значения - количество абонентов, использующих данный тариф.
PM MAIL Skype   Вверх
eppi
Дата 17.6.2015, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.11.2013

Репутация: нет
Всего: нет



Цитата(rudolfninja @ 17.6.2015,  12:12)
Привет.
Не вижу смысла использовать тут бинарное дерево.
Наверное, бинарное дерево поможет быстрее найти только номер телефона, а вот самый востребованный тариф...я бы искал по другому. Например, создал перечисление тарифов и массив, в котором индексами будут элементы перечисления, а значения - количество абонентов, использующих данный тариф.

Спасибо, я понял ход твоих мыслей  smile ,но требуют строго по заданию, нам ничего не объясняли, элементарные задания вроде сделал, а с этим застрял
PM MAIL   Вверх
rudolfninja
Дата 18.6.2015, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: 3
Всего: 6



Я понимаю, что дерево нужно только для хранения базы данных об абонентах и, вероятно, более быстрого поиска по номеру телефона (если его исользовать как значение узла дерева).
То есть, сначала надо будет создать класс/структуру, описывающую абонента и переопределить в ней оператор сравнения (больше или меньше).
Затем понадобится дерево. В принципе, можно взять и дерево поиска и сортирующее дерево (какое будет проще реализовать то и используй). Дерево будет хранить в себе информацию об абоненте (ФИО владельца, номер, тариф). Причем ключем, по которому будут размещатся элементы, будет номер телефона (строковое значение). Это ускорит поиск для владельца по номеру телефона.
Задача с выводом базы данных и определением наиболее популяроного тарифа решается путем обхода всего дерева.
Для вывода просто обходишь дерево и выводишь информацию с каждого узла.
Для поиска тарифа я описал метод выше.
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0711 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.