Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx54 / Моя записка (2).docx
Скачиваний:
23
Добавлен:
01.08.2013
Размер:
242.54 Кб
Скачать

Содержание

1 Задача №1.46_______________________________________________3

1.1. Постановка задачи и её анализ________________________

1.2. Описание структур данных___________________________

1.3. Проектирование программы__________________________

1.4. Результаты тестирования_____________________________

1.5. Оформление_______________________________________

2 Задача №2.20_______________________________________________8

2.1. Постановка задачи и её анализ________________________

2.2. Описание структур данных___________________________

2.3. Проектирование программы__________________________

2.4. Результаты тестирования_____________________________

3 Задача №3.13______________________________________________11

3.1. Постановка задачи и её анализ________________________

3.2. Описание структур данных___________________________

3.3. Проектирование программы__________________________

3.4. Результаты тестирования_____________________________

4 Задача №4.7_______________________________________________14

4.1. Постановка задачи и её анализ________________________

4.2. Описание алгоритма_________________________________

4.3. Проектирование программы__________________________

4.4. Результаты тестирования____________________________

Список использованных источников_______________________16

1 Задача №1.46

1.1 Постановка задачи и ее анализ

Линейный список записей содержит шестизначные номера телефонов и информацию о сумме задолженности абонента данного телефона. Записи об одном абоненте могут повторяться. Программа должна выводить суммарную задолженность абонента по введенному номеру телефона. Операции со списком реализовать подпрограммами.

Создаём линейный список, а после пишем процедуры для решения поставленной задачи.

1.2 Описание структур данных

Описание динамической структуры линейный список:

type

type_info = record {описание данных о должниках}

num:string [6];{Номер должника}

dolg:string;{ Долг}

end;

type_ukaz = ^type_elem;{описание указателя на элемент линейного списка}

type_elem = record {тип элементов}

info: type_info;{поле с данными о списке должников}

ukaz: type_ukaz;{указатели на следующий эл-т}

end;

var

beg_spis, st, sp: type_ukaz;{указатели на: начало списка, текущее положение, следующее}

1.3 Проектирование программы

Для решения поставленной задачи, нам потребуется несколько процедур: Input_in_spis; Output_from_spis; Poisk_and_output .

Сперва пользователь выбирает базу данных. Затем процедура Input_in_spis позволяет нам считать данные из файла и занести их в линейный список.

Листинг процедуры:

procedure Input_in_spis;

var

f_input: text;

i: byte;

fn: string;

begin

clearmem;

repeat

write('Введите имя базы данных: ');

readln(fn);

if not FileExists(fn) then

writeln('Ошибка ввода. Попробуйте ещё раз');

until FileExists(fn);

assign(f_input,fn);

reset(f_input);

new(st);

beg_spis:= st;

while not eof(f_input) do

begin

with st^.info do

begin

readln(f_input,num);

readln(f_input,dolg);

end;

sp:= st;

new(st);

sp^.ukaz:= st;

end;

sp^.ukaz:= nil;

close(f_input);

end;

Далее введенные данные можно вывести на экран или сразу же перейти к выводу информации о необходимом нам абоненте.

Для вывода списка на экран используется процедура Output_from_spis.

Листинг процедуры:

procedure Output_from_spis;

var

i,k: byte;

label label3;

begin

clrscr;

st:= beg_spis;

label3:

k:=0;

i:=1;

while st<>nil do

begin

y:=14;

with st^.info do

begin

gotoxy(1,wherey-2);write(i,' ',num);inc(i);

gotoxy(24,wherey);write(dolg);

gotoxy(1,wherey+2);

k:=k+1;

end;

st:= st^.ukaz;

if (k=11) then

begin

writeln('Дальше - f1');

while ReadKey <> #59 do

begin

end;

clrscr;

goto label3;

end;

end;

writeln('Обратно - f1');

while ReadKey <> #59 do

begin

end;

clrscr;

begin

chose;

end;

end;

Для поиска и вывода на экран искомого абонента используется процедура Poisk_and_Output.

Листинг процедуры:

procedure POISK_AND_OUTPUT;

var poisk: string;

sum: integer;

flag: boolean;

begin

begin clrscr; end;

writeln('Пожалуйста,введите номер абонента!');

read(poisk);

flag:= false;

st:= beg_spis;

sum:=0;

while st<>nil do

begin

with st^.info do

if ((num=poisk) or

(dolg=poisk)) then

begin

flag:= true;

Writeln('Номер:',num,' ','Задолженность: ',dolg);

sum:=sum + StrToInt(dolg);

gotoxy(1,wherey+2);

end;

sp:= st;

st:= st^.ukaz;

end;

If st=nil then

Writeln('Итоговая задолженность данного обонента:',sum);

gotoxy(1,wherey+1);

if (flag = false) then

begin

gotoxy(1,wherey-1);

writeln('Данный абонент не является должником!');

end;

Writeln('Обратно - f1');

while ReadKey <> #59 do

clrscr;

sum:=0;

begin chose; end;

end;

Соседние файлы в папке docx54