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

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

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

> бинарное дерево, программа зацикливается
-Катюшка-
сообщение 1.05.2006 13:45
Сообщение #1


Гость






Помогите плиз!!Я не знаю, как исправить...
Procedure KolE(Root:TreePtr;n:Integer;Node:rabotnik);
Begin
writeln('Введите элемент');
Write('Введите ФИО сотрудника ');
Readln(Node.FIO);
Write('Введите год рождения сотрудника ');
Readln(Node.godroj);
Write('Введите пол сотрудника ');
Readln(Node.pol);
Write('Введите семейное положение сотрудника ');
Readln(Node.cem);
Write('Введите количество детей сотрудника ');
Readln(Node.koldet);
Write('Введите оклад сотрудника ');
Readln(Node.oklad);
n:=0;
New(Root);
while Root<>Nil do {========Здесь зацикливается=====}
if (Root^.data.FIO=Node.FIO) and (Root^.data.pol=Node.pol) and (Root^.data.cem=Node.cem) and
(Root^.data.koldet=Node.koldet) and (Root^.data.oklad=Node.oklad) then
n:=n+1;
KolE(Root^.left,n,Node);
KolE(Root^.right,n,Node);
writeln('количество элементов равно',n);
End;

Здесь наверняка ещё куча ошибок, но помочь мне нужно только с while. Или подсказать, как исправить...
Эта процедура должна найти количество вхождений элемента в дерево. Элемент дерева--запись о сотруднике...Заранее спасибо!!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 4.05.2006 22:39
Сообщение #2


Гость






-Катюшка-, ну сколько раз говорить? Ты должна сначала заполнить элемент для поиска, а уже потом - ИСКАТЬ его в дереве!!!

А ты что делаешь? На каждом шаге рекурсии заново заполняешь E? Смысл в чем?

Procedure Count_E(Root:TreePtr;Var n:Integer;E:rabotnik);
Begin
If Root<>Nil then begin
With Root^.data do
If
(FIO=E.FIO) and (pol=E.pol) and (cem=E.cem) and
(koldet=E.koldet) and (oklad=E.oklad) then Inc(n);
Count_E(Root^.left,n,E);
Count_E(Root^.right,n,E);
end;
End;
...
case key of
'1':OrgTree;
'2':Begin
writeln('Выполняется процедура просмотра дерева');
writeln;
i:=0;
Prosmotr(Top);
Otobr(Top,1);
readln;
end;
'3':Begin
writeln('Введите элемент');
Write('Введите ФИО сотрудника '); Readln(Еlement.FIO);
Write('Введите год рождения сотрудника '); Readln(Еlement.godroj);
Write('Введите пол сотрудника '); Readln(Еlement.pol);
Write('Введите семейное положение сотрудника '); Readln(Еlement.cem);
Write('Введите количество детей сотрудника '); Readln(Еlement.koldet);
Write('Введите оклад сотрудника '); Readln(Еlement.oklad);

Count_E(Root, n, Element);
writeln('Количество вхождений элемента Е в дерево=',n);
readln;
end;
end; { case }


Цитата
всё равно не работает!
В чем это выражается? Зависает? Вылетает? Зацикливается?

P.S. Файл данных можешь присоединить? И напиши, что именно ты вводишь для поиска...
 К началу страницы 
+ Ответить 
-Катюшка-
сообщение 4.05.2006 23:01
Сообщение #3


Гость






Всё равно не считает количество этих элементов!!!!! Всё время выводит ноль... wacko.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме
-Катюшка-   бинарное дерево   1.05.2006 13:45
volvo   Правильно зацикливается... Какое условие задано, т...   1.05.2006 14:05
-Катюшка-   Получается, что процедура делает обход дерева слев...   1.05.2006 15:21
volvo   Телепаты на другом форуме. Ты не привела даже опис...   1.05.2006 15:29
Гость   Вот структура Type rabotnik=record number:int...   1.05.2006 15:44
-Катюшка-   А если вот так написать? Procedure KolE(Root:TreeP...   1.05.2006 17:01
lapp   Катюшка, ты сначала сама разберись в алгоритме. У...   2.05.2006 10:50
Гость   Значит так. Нужно написать рекурсивную процедуру и...   4.05.2006 19:31
volvo   Procedure Count_E(Root:TreePtr; Var n:Integer; E:r...   4.05.2006 19:53
-Катюшка-   Inc(n)-- это увеличение n на единицу, да? Объяснит...   4.05.2006 20:46
-Катюшка-   program TreeProcess; Uses Crt; Type rabotnik=re...   4.05.2006 21:25
-Катюшка-   Всё увидела и исправила)) ... Procedure Count_E(R...   4.05.2006 21:32
volvo   -Катюшка-, ну сколько раз говорить? Ты должна снач...   4.05.2006 22:39
-Катюшка-   Всё равно не считает количество этих элементов...   4.05.2006 23:01
Гость   Я для поиска ввожу всё--ФИО, оклад и тд. Все поля,...   4.05.2006 23:12
Гость   Когда я делала отладку программы, оказалось, что в...   4.05.2006 23:33
volvo   Рассказать, почему? Ты очень сильно путаешься при...   5.05.2006 0:18
-Катюшка-   Всё вышло!!!!!!!!...   5.05.2006 0:34


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

 



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