Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2008, 22:07   #1
Ленивица
Новичок
Джуниор
 
Регистрация: 02.11.2008
Сообщений: 2
По умолчанию Помогите с задачей на Delphi

Здравствуйте. Вот возникла роблемка с задачкой.

Пусть задано конечное множество имен жителей некоторого города, причем для каждого жителя перечислены имена его детей. Перечислите все пары жителей города, которые являются родственниками, причем жители А и Б называются родственниками, если:
a) А – это ребенок Б;
b) Б – это ребенок А;
c) существует некий В такой, что А является родственником В, а В является родственником Б

Как это написать на Delphi? Заранее спасибо.
Ленивица вне форума Ответить с цитированием
Старый 02.11.2008, 22:29   #2
L_M
Форумчанин Подтвердите свой е-майл
 
Регистрация: 25.02.2008
Сообщений: 289
По умолчанию

Так нужно решение или помощь в решении?
Упс...
L_M вне форума Ответить с цитированием
Старый 03.11.2008, 00:10   #3
como
Форумчанин
 
Регистрация: 26.07.2008
Сообщений: 116
По умолчанию

Заводишь массив структур, в каждой из которых ты хранишь имя жителя и номер родственной группы, к которой он принадлежит. Сначала номера родственной группы равны нулю для всех жителей. Если имена жителей не известны заранее, до добавляешь их в массив динамически. Так же заводишь счетчик максимальной иcпользуемой родственной группы. Сначала этот счетчик тоже равен нулю. Далее нужно добавить пару "А - ребенок Б" в этот массив. Находишь в массиве или добавляешь А. Находишь в массиве или добавляешь Б. Если для А родственная группа не равна нулю, а для Б - равна (или наоборот), то присваиваешь родственной группе Б значение родственной группы А (или наоборот). Если для А и для Б родственная группа равна нулю, заводишь новую родственную группу, увеличивая счетчик максимальной используемой родственной группы, и присваиваешь это значение А и Б. Если для А и для Б родст. группа не равна нулю, присваиваешь Б значение родственной группы А, и проходишь по всему массиву, заменяя значение родственной группы Б на А.

В конце у тебя получается массив жителей, разбитых на пронумерованные родственные группы. Далее в каждой родственной группе ты должен найти все пары, чтобы перечислить их, как написано в условии задачи. Сначала выделяешь какую-нибудь родственную группу в отдельный массив. Далее алгоритм очень простой: ты идешь по массиву в двух вложенных циклах - первый цикл по всему массиву, а второй по той части, которая между индексом первого цикла и концом массива - вот и все твои пары будут перечисленны.

ICQ: 225-270-844
como вне форума Ответить с цитированием
Старый 03.11.2008, 19:32   #4
Ленивица
Новичок
Джуниор
 
Регистрация: 02.11.2008
Сообщений: 2
По умолчанию

Спасибо большое за помощь)
Ленивица вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите плз с задачей в Delphi jellyfish Помощь студентам 1 09.05.2008 14:06
Помогите с задачей по Delphi Asterix Фриланс 4 24.04.2008 20:11
помогите с задачей на Delphi Soilwork Помощь студентам 7 23.04.2008 19:07
помогите с задачей на Delphi lyonya0111 Помощь студентам 11 22.04.2008 17:35
Помогите с задачей (файлы) на Delphi Oksana11 Помощь студентам 18 11.01.2008 23:11