| 
| 
 | Вопрос # 4 823/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Есть определенный массив с именами и последним элементом "нет". И описаны 2 ф-ции Отец(х) и Мать(х), которые возвращают имена относительно отца и матери человека с именем х или строку "нет", если отсутствует информация о нужном человеке. Создать логическую ф-цию Наследник(а, в), которая проверяет, есть ли человек с именем "в" наследником человека с именем а, то есть сыном или дочерью, внуком и т.д. Тема: Рекурсия.
 Опять таки прощу помощи в реализации алгоритма, а то наши преподы как зададут, сижу и не могу понять чего хотят... Благодарю...
 
|  |   Вопрос задал: Жикльор (статус: 5-ый класс)Вопрос отправлен: 15 декабря 2010, 18:19
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 18; последнее сообщение — 15 декабря 2010, 22:31; участников в обсуждении: 3. 
|   | min@y™ (статус: Доктор наук), 15 декабря 2010, 18:23 [#1]:Для начала потребуй у препода чёткие входные данные. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Жикльор (статус: 5-ый класс), 15 декабря 2010, 18:30 [#2]:Входными данными является тип type name=(Алла,Юра,...,Женя,Игорь,нет)
 Это условие задачи на Паскале, но нужно сделать на С...
 Думаю на С подойдет самый обычный массив с уже заготовленными именами, вот только как его все это загнать в массив, чтобы сохранилось понятие где отец, а где сын и т.д.
 Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию. |  
|   | min@y™ (статус: Доктор наук), 15 декабря 2010, 18:39 [#3]: Цитата (Жикльор): вот только как его все это загнать в массив Тут массив не катит, древовидная труктура нужна, так как не известен уровень вложенности. Где внуки, там и правнуки и прапра...внуки и т.д.
 Или я чего-то не понимаю?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Жикльор (статус: 5-ый класс), 15 декабря 2010, 19:31 [#4]:Тогда может вводить эти данные структурой-константой, чтобы не писать код для ввода данных в структуру? Сразу в коде указать дерево родителей и т.д... Только как можно это описать деревом? Как создать дерево в С? Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию. |  
|   | min@y™ (статус: Доктор наук), 15 декабря 2010, 19:40 [#5]:Дерево это должно быть однозначно задано человеком, дающим такое задание, т.е. преподом. Иначе, непонятно, с чем работать. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Жикльор (статус: 5-ый класс), 15 декабря 2010, 19:43 [#6]:Дерево я могу сам создать с начальными данными - только как его записать? Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию. |  
|   | min@y™ (статус: Доктор наук), 15 декабря 2010, 19:53 [#7]:Сначала на бумажке нарисуй и выложи посмотреть. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Жикльор (статус: 5-ый класс), 15 декабря 2010, 20:46 [#8]:  Вот примерно так...
 Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию. |  
|   | min@y™ (статус: Доктор наук), 15 декабря 2010, 20:56 [#9]: Цитата (Жикльор): Вот примерно так...  Не вижу картинки, у меня спаморезка режет картинки, не принадлежащие сайту страницы.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 15 декабря 2010, 20:59 [#10]:А если сын (Евгений) - не единственный ребёнок в семье, а? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 15 декабря 2010, 21:04 [#11]:Короче, у каждого экземпляра класса должны быть 2 указателя - "отец" и "мать". Здесь классическая древовидная структура не прокатит, т.к. в ней у потомка только один родитель (или 0, если это Item верхнего уровня) и от нуля (несколько) потомков, которым он является единственным родителем. Как всё это задать константным массивом, я не знаю. Не только в С++, но и в Паскале...
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Жикльор (статус: 5-ый класс), 15 декабря 2010, 21:13 [#13]:Хорошо, спасибо) Чувствую все равно придется идти к преподу и узнавать( Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию. |  
|   | min@y™ (статус: Доктор наук), 15 декабря 2010, 21:13 [#14]: Цитата (Жикльор): http://s57.radikal.ru/i158/1012/6c/a4cd0ce905c3.png Да посмотрел я уже, раскопал ссылку в исходнике страницы.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | 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]:Спасибо)) Главное есть, теперь только красоту навести) Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |