|
Вопрос # 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]:
Спасибо)) Главное есть, теперь только красоту навести)
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|