IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Ввод/вывод дерева, помогите
DOG-Paul
сообщение 17.12.2005 17:28
Сообщение #1


Гость






Вообещм есть процедура ввода дерева.
Нужно организовать его вывод по типу: A B . . C . .
Помогите кто может! smile.gif

 
Program derevo;
uses crt;
type plist=^tlist;
tlist= record
llink,rlink:plist;
info:char;
end;
var a, first:plist;
Procedure vvod (var first:plist);
var s:char;
Begin
readln(s);
If s<>'.'
then
begin
new(a);
first:=a;
a^.info:=s;
vvod(a^.llink);
vvod(a^.rlink);
end
else
first:=nil;
end;
Begin
clrscr;
first:=nil;
vvod (first);
readkey;
End.

 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
DOG-Paul
сообщение 18.12.2005 0:03
Сообщение #2


Гость






АУ! sad.gif

Да что такое?
Никто не поможет чтоли? sad.gif
 К началу страницы 
+ Ответить 
klem4
сообщение 18.12.2005 11:45
Сообщение #3


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Не надо спам разводить, сообщения объеденил, подожди, просто твое время еще не пришло ;)) загляни пока сюда : FAQ : Деревья


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 18.12.2005 13:35
Сообщение #4


Гость






Люди! sad.gif
Очень срочно надо.... sad.gif Ну помогите плиз... sad.gif sad.gif
 К началу страницы 
+ Ответить 
Гость
сообщение 18.12.2005 17:12
Сообщение #5


Гость






Люди! Я горю! Помогите иначе мне хана!
Вот что я сделал,но работает не првильно! volvo помоги ради бога! sad.gif

Program derevo;
uses crt;
type plist=^tlist;
tlist= record
llink,rlink:plist;
info:char;
end;
var a, first: plist;
Procedure vvod (var last:plist);
var s:char;
Begin
readln(s);
If s<>'.'
then
begin
new(a);
last:=a;
a^.info:=s;
vvod(a^.llink);
vvod(a^.rlink);
end
else
last:=nil;
end;
procedure print (var last:plist);
Begin
if last<>nil
then
begin
write (last^.info, ' ');
print (last^.llink);
print (last^.rlink);
end
else
begin
write ('. ');
last:=nil;
end;
end;
Begin
clrscr;
first:=nil;
vvod (first);
print (first);
readkey;
End.

.
 К началу страницы 
+ Ответить 
klem4
сообщение 18.12.2005 18:01
Сообщение #6


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Вот изменил чуть-чуть программу из FAQ, мог бы и сам сделать :

uses crt;

Type
TType = char;

TTree = ^TNode;
TNode =
Record
Data: TType;
Left, Right: TTree;
End;
Procedure Add(Var T: TTree; i: TType);

Procedure CreateNode(Var p: TTree; n: TType);
Begin
New(p);
p^.Data := n;
p^.Left := nil;
p^.Right := nil
End;

Begin
If T <> nil Then
With T^ Do Begin

If Data < i Then Add(Right, i)
Else
If Data > i Then Add(Left, i)

End
Else
CreateNode(T, i)
End;

Procedure PrintDown(T: TTree);
Begin
If T = nil Then Exit;
With T^ Do Begin

Write(Data, ' ');
PrintDown(Left); PrintDown(Right)

End
end;

const
s : array[1..10] of char = ('a','b','c','d','e','f','g','k','l','.');
Var
ch: char;
myTree : TTree;
i : byte;


Begin

clrscr;

myTree := nil;

for i := 1 to 10 do
if s[i] <> '.' then begin

Add(myTree, s[i]);
PrintDown(myTree);
WriteLn;
end;
End.



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.12.2005 18:06
Сообщение #7


Гость






Гость, все прекрасно и удивительно ... Только вот переменная A описана не там, где нужно... Она должна быть локальной в процедуре Vvod:
var first: plist;
Procedure vvod (var last:plist);
var
s:char;
a: plist;
Begin
readln(s);
If s<>'.' then begin
new(a);
last:=a;
a^.info:=s;
vvod(a^.llink);
vvod(a^.rlink);
end
else last:=nil;
end;
 К началу страницы 
+ Ответить 
Гость
сообщение 18.12.2005 21:47
Сообщение #8


Гость






Спасибо огромное! smile.gif
А почему так было-то? smile.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 9:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"