|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.11.2008, 22:07 | #1 |
Новичок
Джуниор
Регистрация: 02.11.2008
Сообщений: 2
|
Помогите с задачей на Delphi
Здравствуйте. Вот возникла роблемка с задачкой.
Пусть задано конечное множество имен жителей некоторого города, причем для каждого жителя перечислены имена его детей. Перечислите все пары жителей города, которые являются родственниками, причем жители А и Б называются родственниками, если: a) А – это ребенок Б; b) Б – это ребенок А; c) существует некий В такой, что А является родственником В, а В является родственником Б Как это написать на Delphi? Заранее спасибо. |
02.11.2008, 22:29 | #2 |
Форумчанин Подтвердите свой е-майл
Регистрация: 25.02.2008
Сообщений: 289
|
Так нужно решение или помощь в решении?
Упс...
|
03.11.2008, 00:10 | #3 |
Форумчанин
Регистрация: 26.07.2008
Сообщений: 116
|
Заводишь массив структур, в каждой из которых ты хранишь имя жителя и номер родственной группы, к которой он принадлежит. Сначала номера родственной группы равны нулю для всех жителей. Если имена жителей не известны заранее, до добавляешь их в массив динамически. Так же заводишь счетчик максимальной иcпользуемой родственной группы. Сначала этот счетчик тоже равен нулю. Далее нужно добавить пару "А - ребенок Б" в этот массив. Находишь в массиве или добавляешь А. Находишь в массиве или добавляешь Б. Если для А родственная группа не равна нулю, а для Б - равна (или наоборот), то присваиваешь родственной группе Б значение родственной группы А (или наоборот). Если для А и для Б родственная группа равна нулю, заводишь новую родственную группу, увеличивая счетчик максимальной используемой родственной группы, и присваиваешь это значение А и Б. Если для А и для Б родст. группа не равна нулю, присваиваешь Б значение родственной группы А, и проходишь по всему массиву, заменяя значение родственной группы Б на А.
В конце у тебя получается массив жителей, разбитых на пронумерованные родственные группы. Далее в каждой родственной группе ты должен найти все пары, чтобы перечислить их, как написано в условии задачи. Сначала выделяешь какую-нибудь родственную группу в отдельный массив. Далее алгоритм очень простой: ты идешь по массиву в двух вложенных циклах - первый цикл по всему массиву, а второй по той части, которая между индексом первого цикла и концом массива - вот и все твои пары будут перечисленны. ICQ: 225-270-844 |
03.11.2008, 19:32 | #4 |
Новичок
Джуниор
Регистрация: 02.11.2008
Сообщений: 2
|
Спасибо большое за помощь)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите плз с задачей в 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 |