![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 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. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с бинарным файлом | Геннадий | 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 |