Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 232
от 17.01.2004, 16:50

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 404
Отправлено ответов: 1431
Активность: 354.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

vitya
Статус: Профессиональный
Общий рейтинг: 108.42
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 160.04
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.49
[Подробней >>]
 
Vitally
Статус: Доверительный
Общий рейтинг: 156.52
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 150
URL: Программирование на Паскале
[Подробней >>]
Tancho
Статус: Профессиональный
Общий рейтинг: 152.02
Телефон: сл. 0359 0391 65 631; 0359 0391 53 105
[Подробней >>]
 
Strory
Статус: Начальный
Общий рейтинг: 137.5
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 400. Здравствуйте. Ввожу в суть дела. Сильно ветвящееся дерево хранится в оперативной памяти. Каждая верш... (ответов: 2)
Вопрос № 401. Здраствуйте. Как можно в turbo pascal 7.0 при помощи оператора FOR написать программу которая бы выв... (ответов: 7)

Вопросов: 2, ответов: 9


 Вопрос № 400

Здравствуйте.
Ввожу в суть дела. Сильно ветвящееся дерево хранится в оперативной памяти. Каждая вершина содержит следующую информацию: имя и год рождения. Структура дерева: указатель down каждой вершины указывает на самого старшего сына, указатель right - на брата этого сына (см. приложение).
Удалить из дерева можно только лист, т.к. при удалении внутреннего узла удалятся и все его потомки. Имеется процедура Search(Root,Name,Year) (см. приложение), которая находит лист. Но удалить лист таким способом не получится, т.к. ссылка, возвращаемая процедурой Search, указывает на текущий объект.
Как можно преобразовать данную процедуру, чтобы она указывала именно на удаляемый лист (грубо говоря или на бездетного сына или на бездетного брата)?
С уважением,
О. 14 янв 2004 г. 2:19 рм


Приложение:


Вопрос отправлен: 14.01.2004, 11:25
Отправитель: О.

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Добрый день, О.!
В коде отсутствует функция
Search(down,n,y,ptr); - а она делает рекурсивный поиск. Без нее трудновато.
Дерево у тебя не сильно ветвящееся, а изморофное двоичному дереву. :)
Удалять можно и внутренние узлы, просто надо это делать рекурсивно.
Ты должен иметь указатель, на предка, что его изменить, так как после удаления сына, у предка оказывается висящий указатель, что есть плохо.

Ответ отправлен: 14.01.2004, 16:25
Отправитель: vitya


Отвечает sir henry

Доброе время суток, О.!
Нужно несколько поменять функциональность программы:
Search сделать не процедурой, а функцией, которая возвращает указатель на искомый объект. Т.е.:
Function Search(данные_для_поиска): Link;
Таким образом, получив ссылку на необходимый объект, Вы можете делать с найденым объектом все что захотите: просматривать, редактировать, удалять и т.д.

Приложение:

Ответ отправлен: 14.01.2004, 12:58
Отправитель: sir henry


 Вопрос № 401

Здраствуйте.
Как можно в turbo pascal 7.0 при помощи оператора FOR написать программу которая бы выводила сумму первых трех натуральных чисел(т.е. 1+2+3)



Вопрос отправлен: 14.01.2004, 16:48
Отправитель: Семен

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Приветствую Вас, Семен!
А что такого сложного? См. Приложение


Приложение:

Ответ отправлен: 14.01.2004, 18:06
Отправитель: Ayl


Отвечает Vitally

Приветствую Вас, Семен!
Ну, например так:
Var sum,i:byte;
Begin
sum:=0;
For i:=1 to 3 do
sum:=sum+i;
Writeln(sum)
end.


Ответ отправлен: 14.01.2004, 18:01
Отправитель: Vitally


Отвечает vitya

Приветствую Вас, Семен!
var i, s : integer;
begin
s := 0;
for i := 1 to 3 do
inc(s, i);
writeln(s);
end.

Ответ отправлен: 14.01.2004, 16:52
Отправитель: vitya


Отвечает Boriss

Доброе время суток, Семен!
Ну и вопросики Вы задаете ;))
var
sum: Integer;
i: Integer;
begin
sum:=0;
for i:=1 to 3 do sum:=sum + i
end.

Ответ отправлен: 14.01.2004, 17:00
Отправитель: Boriss


Отвечает sir henry

Доброе время суток, Семен!
var
i,j : integer;
begin
j:=0;
for i:=1 to 3 do
j:=j+i;
end.

Ответ отправлен: 15.01.2004, 08:15
Отправитель: sir henry


Отвечает Tancho

Приветствую Вас, Семен!
Можно так :) :
program suma;
Var
i : Integer;
begin
for i := 1 to 1 do
WriteLn('1+2+3 = ',1+2+3);
end.
а можно и более интелигентнее :), вторая прога можно модифицировать, для каждого N > 1 :
Смотри приложение!

Приложение:

Ответ отправлен: 15.01.2004, 12:05
Отправитель: Tancho


Отвечает Strory

Доброе время суток, Семен!
Без комментариев...
см ниже

Приложение:

Ответ отправлен: 17.01.2004, 12:25
Отправитель: Strory



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (24)
C / C++ (17)
Perl (4)
Builder / Delphi (18)
Pascal (19)
Basic / VBA (5)
Java / JavaScript (5)
PHP (13)
Криптография (5)
WinAPI (12)
Пользователю
Windows 95/98/Me (40)
Windows NT/2000/XP (58)
"Железо" (30)
Поиск информации (20)
Администратору
Windows NT/2000/XP (28)
Linux / Unix (10)
Юристу
Гражданское право (14)
Семейное право (10)
Трудовое право (11)
КоАП (10)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное