Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 823

Раздел: C++
/ вопрос открыт /

Приветствую, уважаемые эксперты!
Есть определенный массив с именами и последним элементом "нет". И описаны 2 ф-ции Отец(х) и Мать(х), которые возвращают имена относительно отца и матери человека с именем х или строку "нет", если отсутствует информация о нужном человеке. Создать логическую ф-цию Наследник(а, в), которая проверяет, есть ли человек с именем "в" наследником человека с именем а, то есть сыном или дочерью, внуком и т.д. Тема: Рекурсия.
Опять таки прощу помощи в реализации алгоритма, а то наши преподы как зададут, сижу и не могу понять чего хотят... Благодарю...

Жикльор Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Жикльор (статус: 5-ый класс)
Вопрос отправлен: 15 декабря 2010, 18:19
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 18; последнее сообщение — 15 декабря 2010, 22:31; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 15 декабря 2010, 18:23 [#1]:

Для начала потребуй у препода чёткие входные данные.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Жикльор

Жикльор (статус: 5-ый класс), 15 декабря 2010, 18:30 [#2]:

Входными данными является тип
type name=(Алла,Юра,...,Женя,Игорь,нет)
Это условие задачи на Паскале, но нужно сделать на С...
Думаю на С подойдет самый обычный массив с уже заготовленными именами, вот только как его все это загнать в массив, чтобы сохранилось понятие где отец, а где сын и т.д.
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
min@y™

min@y™ (статус: Доктор наук), 15 декабря 2010, 18:39 [#3]:

Цитата (Жикльор):

вот только как его все это загнать в массив

Тут массив не катит, древовидная труктура нужна, так как не известен уровень вложенности. Где внуки, там и правнуки и прапра...внуки и т.д.
Или я чего-то не понимаю?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Жикльор

Жикльор (статус: 5-ый класс), 15 декабря 2010, 19:31 [#4]:

Тогда может вводить эти данные структурой-константой, чтобы не писать код для ввода данных в структуру? Сразу в коде указать дерево родителей и т.д... Только как можно это описать деревом? Как создать дерево в С?
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
min@y™

min@y™ (статус: Доктор наук), 15 декабря 2010, 19:40 [#5]:

Дерево это должно быть однозначно задано человеком, дающим такое задание, т.е. преподом. Иначе, непонятно, с чем работать.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Жикльор

Жикльор (статус: 5-ый класс), 15 декабря 2010, 19:43 [#6]:

Дерево я могу сам создать с начальными данными - только как его записать?
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
min@y™

min@y™ (статус: Доктор наук), 15 декабря 2010, 19:53 [#7]:

Сначала на бумажке нарисуй и выложи посмотреть.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Жикльор

Жикльор (статус: 5-ый класс), 15 декабря 2010, 20:46 [#8]:


Вот примерно так...
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
min@y™

min@y™ (статус: Доктор наук), 15 декабря 2010, 20:56 [#9]:

Цитата (Жикльор):

Вот примерно так...

Не вижу картинки, у меня спаморезка режет картинки, не принадлежащие сайту страницы.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 15 декабря 2010, 20:59 [#10]:

А если сын (Евгений) - не единственный ребёнок в семье, а?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 15 декабря 2010, 21:04 [#11]:

Короче, у каждого экземпляра класса должны быть 2 указателя - "отец" и "мать". Здесь классическая древовидная структура не прокатит, т.к. в ней у потомка только один родитель (или 0, если это Item верхнего уровня) и от нуля (несколько) потомков, которым он является единственным родителем.
Как всё это задать константным массивом, я не знаю. Не только в С++, но и в Паскале...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Жикльор

Жикльор (статус: 5-ый класс), 15 декабря 2010, 21:07 [#12]:

http://s57.radikal.ru/i158/1012/6c/a4cd0ce905c3.png
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
Жикльор

Жикльор (статус: 5-ый класс), 15 декабря 2010, 21:13 [#13]:

Хорошо, спасибо) Чувствую все равно придется идти к преподу и узнавать(
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
min@y™

min@y™ (статус: Доктор наук), 15 декабря 2010, 21:13 [#14]:

Цитата (Жикльор):

http://s57.radikal.ru/i158/1012/6c/a4cd0ce905c3.png

Да посмотрел я уже, раскопал ссылку в исходнике страницы.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 15 декабря 2010, 21:16 [#15]:

Цитата (Жикльор):

Хорошо, спасибо) Чувствую все равно придется идти к преподу и узнавать(

К этому я и веду. Пока дело тёмное.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 15 декабря 2010, 21:19 [#16]:

как описаны функции Мать(х) и Отец(х)? Если четкого описания нет, то я думаю, что речь не идет о написании конкретной программы. А только алгоритма Наследник(а,в) на основе гипотетических Мать(х) и Отец(х) с использованием рекурсии.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 15 декабря 2010, 21:53 [#17]:

алгоритм примерно такой (не писал на С, поэтому пишу с использованием паскалевского синтаксиса):
function Наследник(а,в:name):boolean;
var ft,mt:name;
begin
  Result:=false;
  ft:=Отец(в);
  if ft=a
  then Result:=true
  else begin
         mt:=Мать(в);
         if mt=a
         then Result:=true
         else begin
                if ft<>'нет'
                then Result:=Наследник(а,ft);
                if not(Result)
                then if (mt<>'нет')
                     then Result:=Наследник(а,mt);
               end;
        end;
end;
Жикльор

Жикльор (статус: 5-ый класс), 15 декабря 2010, 22:31 [#18]:

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

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:29
Выполнено за 0.04 сек.