Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2008, 10:06   #1
prince-of-dark
Новичок
Джуниор
 
Регистрация: 19.12.2008
Сообщений: 1
По умолчанию дописать прграмму с бинарным деревом...

На днях сдавать(((
Задача такая: Нужно организовать бинарное дерево записей, где Num - номер телефона, LName - фамилия абонента, Time - время разговора (часы минуты секунды). Ввод с клавиатуры. У пользователя должен быть выбор: 1. Распечатка всей картотеки, Но в виде обычного списка(не бинарного)! 2. Поиск записи по номеру телефона и прибавлении к ней времени нового разговора(на экране время разговора отображается чч:мм:сс) 3. Вывод на экран общей стоимости разговоров абонента(из п.2).

Вот некоторые наработки...

uses crt;
Type TInf=record
Num:integer;
LName:string[20];
Time: array[1..3] of longint;
end;

TTree=^Tree;
Tree=Record
Inf:TInf;
Left,Right: TTree;
end;

Procedure Tab(n: Integer); {Процедура установки курсора в точку N длины строки}
Begin GoToXY(n,WhereY);
End;

Procedure ShowHeader;{Отображение заголовка к данным}
Begin
Write('Номер Фамилия Время разговора');
WriteLn; {Переводим строку, подготавливаемся к выводу данных...}
End;

Procedure Show(I: TInf);{Отображение данных записи}
Begin
Write(I.Num); {Аналогично выводу заголовков только выводим данные из записи T}
Tab(5);Write(I.num);
Tab(20);Write(I.LName);
Tab(35);Write(I.Time[1],':');
Tab(38);Write(I.Time[2],':');
Tab(41);Write(I.Time[3]);
WriteLn; {Перевод строки}
End;

Procedure Input(Var I: TInf);{Заполнение записи путем ввода данных с клавиатуры}
Begin
Write(' 1. telephon number : ');ReadLn(I.Num);
Write(' 2. last name : ');ReadLn(I.LName);
Write(' 3. time of speak : ');Readln(I.time[1], I.time[2], I.time[3]);
End;

Function SignKey(A,B: TInf): Boolean;
Begin SignKey:=False;
If A.Num<B.Num then SignKey:=True;
End;
Function FindKey(A,B: TInf): Boolean;
Begin FindKey:=False;
If A.Num=B.Num then FindKey:=True;
End;

Function NewSheet(X:TInf): TTree; {размещение в куче нового элемента}
Var T: TTree;
Begin New (T); T^.Inf:=X; T^.Right:=Nil; T^.Left:=Nil; NewSheet:=T; End;

Procedure AddSheet(Var R: TTree; N: TInf);{размещение нового элемента (листа) в структуре}
Begin
If R<>Nil then begin
If SignKey(R^.Inf,N) then begin
If R^.Left=Nil then R^.Left:=NewSheet(N) else AddSheet(R^.Left,N);
end else begin
If R^.Right=Nil then R^.Right:=NewSheet(N) else AddSheet(R^.Right,N);
end;
end else begin {дерево не создано, создаем его}
R:=NewSheet(N);
end;
End;

Var Root: TTree; I: TInf; n,x: Integer; {Определяем необходимые переменные}

Begin
clrscr;
Root:=Nil; {Начальные условия - пустое дерево}
For n:=1 to 8 do begin {В цикле вводим записи (8 штук)}
WriteLn('-===[запись: ',n,']=====---');
Input(I);
AddSheet(Root,I);{Добовляем данные}
end;
x:=999;
while x<>0 do begin
clrscr;
writeln('Введите 1 для вывода всей картотеки на экран');
writeln('Введите 2 для ввода номера телефона и времени разговора');
writeln('Введите 3 для вывода на экран стоимости оплаты телефонного разговора');
writeln('Введите 0 для выхода из программы');
write('Enter: ');
readln(x);
clrscr;
case x of
1: begin

end;
2: begin

end;
3: begin

end;
0: begin
end;
else begin
writeln('Попробуйте еще');
readkey;
end;
end;
end;
writeln('Конец.');
readkey
end.
prince-of-dark вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с бинарным файлом Геннадий Win Api 8 22.10.2009 18:49
Дописать... Lemo Помощь студентам 14 14.10.2008 20:49
Автозагруска програм (как сделать прграмму самостоятельно загружающейся и перемещающейся?) BlyFox Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 01.05.2008 08:51
Глюки с массивами и бинарным поиском nycmoma Помощь студентам 6 18.02.2007 10:44