IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Бинарное дерево, одновременный подсчет очков
сообщение
Сообщение #1


Гарцующая лошадка
**

Группа: Пользователи
Сообщений: 107
Пол: Женский
Реальное имя: Любовь

Репутация: -  0  +


Добрый вечер! составляю бинарное дерево. Есть запись, содержащая название команды, фамилию игрока и сколько очков он забил. Таких записей за игру может быть несколько, потому как один и тот же игрок может забить несколько очков. Нужно составить бинарное дерево, упорядоченное в алфавитном порядке, и при его реализации одновременно подсчитывать количество очков, забитых одним игроком. я хочу брать первый элемент , загонять его в корень, потом брать следующий, сравнивать с корнем , если равны, суммировать очки , если нет, то определять его положение в дереве. Не могу понять, как мне , если я нахожусь уже где-то в середине дерева, вернуться и сравнивать с вершиной новую запись... Не хватает небольшого приложения силы в чуть -чуть пониже спины . Окажите, если сможете.)))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Нужно составить бинарное дерево, упорядоченное в алфавитном порядке, и при его реализации одновременно подсчитывать количество очков, забитых одним игроком.

Упорядочить в алфавитном порядке по какому признаку? По названию команды, или по по фамилии игрока?

Тут понимаешь в чем дело... Если ты хранишь в дереве фамилии игроков, то сколько бы раз он не забил за игру, в дереве все равно будет только одна запись, но вот число очков в ней будет увеличиваться... Я бы, по крайней мере, делал именно так... Что-то вот такого типа:

Type
T = Record
FIO: string;
scores: integer;
End;

TTree = ^TNode;
TNode = Record
Data: T;
Left, Right: TTree;
End;

Procedure Add(Var T: TTree; FIO: String; score: Integer);
Procedure CreateNode(Var p: TTree);
Begin
New(p);
p^.Data.FIO := FIO;
p^.Data.scores := score;
p^.Left := nil; p^.Right := nil
End;

Begin
If T <> nil Then
With T^ Do Begin
If Data.FIO < FIO Then Add(Right, i)
Else
If Data.FIO > FIO Then Add(Left, i)
Else Data.scores := Data.scores + score { <-- Вот увеличение очков }
End
Else CreateNode(T)
End;

...
{ А добавлять - вот так: }
Add(Root, 'ivanov', 5);
Add(Root, 'petrov', 3);
Add(Root, 'ivanov', 2);

В результате - у Иванова будет 7 очков... (Программу не тестировал - набирал прямо здесь, только для иллюстрации идеи...)

Если у тебя другая стратегия - то приведи описание типа дерева, и то, как ты добавляешь в него информацию...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гарцующая лошадка
**

Группа: Пользователи
Сообщений: 107
Пол: Женский
Реальное имя: Любовь

Репутация: -  0  +


я ввожу информацию из файла она у меня там уже забита... там прикрепила файл, нужны 2 первые процедуры... занимаюсь плагиатом, нашла у вас на форуме, вот как переделать, чтоб подсчитывал очки?

нужно упорядочивать по фамилии игроков . идея в принципе понятна, просто как это реализовать с подсчетом, просто потому нужно в виде списка представить 10 самых результативных игроков, надо ж где-то будет инфихранить , кто сколько забил...


Прикрепленные файлы
Прикрепленный файл  _TREE.PAS ( 19.58 килобайт ) Кол-во скачиваний: 73
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 24.05.2017 22:38
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"