Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364150
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62792)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21320)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21697)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8694)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3463)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20645)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Курсовая работа: Структуры и организация данных в ЭВМ

Название: Структуры и организация данных в ЭВМ
Раздел: Рефераты по информатике, программированию
Тип: курсовая работа Добавлен 19:01:03 12 ноября 2010 Похожие работы
Просмотров: 31 Комментариев: 2 Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать

1. Состав Dеlphi-проекта

Программа включает одну форму: главную, на которой и реализован интерфейс программы

На форме пристутствуют следующие компоненты:

2 компоненты TstringGrid: для отображения результатов работы программа в виде двух таблиц со значениями;

6 компонент TLabel: для отображения поясняющих надписей;

1 компонента TButton: для включения режима поиска;

1 компонента: TBitBtn: для закрытия формы и выхода из приложения;

4 компоненты TRadioButton: для выбора режима отображения кривых на компонентах Tchart (вывод графиков вместе и по отдельности);

4 компоненты TEdit: для ввода данных пользователем;

2 компоненты TChart: для отображения графиков функций;

2 компоненты TComboBox: для выбора графика, отображаемого на компоненте Tchart в режиме «показывать по отдельности»;

2 компоненты TPanel: для группировки компонент TRadioButton.

Программа содержит два модуля: главный модуль программы Project.dpr и модуль MainForm.pas, в котором непосредственно реализуются действия, связанные с поиском.

2. Статические данные и структуры

A: file of Word - файл из N элементов, интерпретируется как таблица, содержащая только целые ключи (N изменяется от Nmin до Nmax )(N*2 байта);

B : array of Word - вектор из К элементов, представляет собой набор аргументов поиска (K*2 байта);

arA : array of Word - массив для временного хранения данных в процедуре сортировки файла A (N*2 байта);

Nmin : Word – минимальное число элементов в таблице A (2 байта);

Nmax : Word – максимальное число элементов в таблице A (2 байта);

Step : Word – шаг изменения числа элементов в таблице A (2 байта);

K : Word - число элементов в векторе B (2 байта);

T, i: Word – счётчики (2 байта);

rnd : Word – переменная, содержащая случайное значение, генерируемое датчиком RANDOM случайных чисел из диапазона [0, 64000] (2 байта);

Fval : Word – значение текущего элемента файла A (2 байта);

SortA1, SortA2, SortAB : array [0..1, 1..4, 1..65535] of Word – значения текущего времени перед выполнением сотвуетствующего вида сортировки в цикле (2*4*65536*2 байта = 1048560 байт);

LinF1, LinF2, BinF, LinFAcc: array [0..1, 1..4, 1..65535] of Word значения текущего времени перед очередным циклом и после него в соответствующих видах поиска (2*4*65535*2 байта = 1048560 байт);

TSortA1, TSortA2, TSortAB array [1..65535] of Word – значения периодов времени, затраченного на соответствующий вид сортировки в цикле (65535*2 байта = 131070 байт);

TLinF1, TLinF2, TBinF, TLinFAcc: array [1..65535] of Word – значения периодов времени, затраченного на соответствующий вид поиска в цикле (65535*2 байта = 131070 байт);

Acc : array [1..3, 1..65535] of Word – массив, накапливающий запросы (3*65535*2 байта = 393210 байт).

3. Логические структуры данных

Логическая схема структуры файла A:

Количество элементов в файле N в процессе выполнения программы изменяется от Nmin до Nmax, т.е. создаётся файл из N=Nmin элементов, затем после необходимых процедур уничтожается и создаётся файл из

Nmin+1 элементов и так, пока N не достигнет значения Nmax

Логическая схема структуры вектора B

4. Алгоритмы обработки основных структур

procedure tform1.fill;

var

r : integer;

begin

rewrite(a);

for r:=1 to i do //наполнение файла

begin //случайными значениями

fval:=random(64000);

write(a, fval);

end;

end;

Данная процедура наполняет файл i значениями, сгенерированными датчиком Random.

Файл A после выполнения первой итерации.

Файл A после выполнения второй итерации.

Файл A после выполнения последней итерации.

procedure tform1.linfind; //линейный поиск

var

s1, s2 : word;

begin

for s1:=0 to k-1 do

for s2:=0 to i-1 do

begin

seek(a, s2);

read(a, fval);

if (b[s1]=fval) then exit;

end;

end;

Процедура перебирает значения из вектора В, сранивая их поэлементно со значениями из файла А.

Состояние вектора и файла при:

первой итерации второй итерации i-й итерации

1*i+1-й итерации 1*i+2-й итерации 1*i+3-й итерации

k*i+1-й итерации k *i+2-й итерации k*i+3-й итерации

procedure tform1.binfind; //двоичный поиск

var

s1, cou, cou1, cou2 : integer;

label

1;

begin

for s1:=0 to k-1 do

begin

cou1:=0;

cou2:=i-1;

while cou1<=cou2 do

begin

cou:=(cou2+cou1) div 2;

seek(a, cou);

read(a, fval);

if (fval=b[s1]) then goto 1

else if fval<b[s1] then cou1:=cou+1

else cou2:=cou-1;

end;

1 : end;

end;

Процедура перебирает значения из вектора В, сранивая их поэлементно со значениями из файла А (файл А должен быть предварительно отсортирован), причём делит файл А пополам и сравнивает значения. Если значение из вектора В больше значения из файла А, то таким же образом исследуется левая половина файла, в противном случае – правая и т.д.

Состояние вектора и файла при:

первой итерации

второй итерации

procedure tform1.linfindacc; //линейный поиск с накоплением

var

s1, s2, cou : word;

begin

cou:=1;

for s1:=0 to k-1 do

for s2:=0 to i-1 do

begin

seek(a, s2);

read(a, fval);

if (b[s1]=fval) then

begin

acc[1, cou]:=s2;

acc[2, cou]:=s1;

acc[3, cou]:=fval;

cou:=cou+1;

end;

end;

end;

Алгоритм процедуры аналогичен алгоритму процедуры tform1.linfind с той разницей, что при совпадении значения в векторе и файле в двухмерный массив аcc записываются индексы файла и вектора, а также совпавшее значение.

procedure tform1.sorta; //сортировка файла a

var

r, d : integer;

tmp, val : word;

begin

setlength(ara, i);

for r:=0 to i-1 do

begin

seek(a, r);

read(a, val);

ara[r]:=val;

end;

for r:=0 to i-2 do

for d:=r+1 to i-1 do

begin

if (ara[r]>ara[d]) then

begin

tmp:=ara[r];

ara[r]:=ara[d];

ara[d]:=tmp;

end;

end;

rewrite(a);

for r:=0 to i-1 do write(a, ara[r]);

end;

Процедура перебирает значения файла, одновременно организуя второй цикл и перебирает значения этой же таблицы, начиная со следующего элемента. Встречая во втором цикле меньшее значение пересылает его во временный файл, значение из первого цикла пересылается в освободившуюся ячейку второго цикла. А его место, в свою очередь, занимает значение из временного файла.

procedure tform1.sortb; //сортировка вектора b

var

r, d : integer;

tmp : word;

begin

for r:=0 to k-2 do

for d:=r+1 to k-1 do

begin

if (b[r]>b[d]) then

begin

tmp:=b[r];

b[r]:=b[d];

b[d]:=tmp;

end;

end;

end;

Алгоритм сортировки вектора аналогичен вышеописанному методу сортировки файла.

5 Руководство пользователя

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

1. Ввод необходимых данных.

Для правильной работы программы необходимо ввести следующие данные: минимальное число элементов в файле A, максимальное число элементов в файле A, шаг изменения количества элементов в файле A от минимального до максимального, число элементов в векторе B.

В случае введения неверной информации программа выдаст соответствующее диалоговое окно:

а) при незаполнении одного из полей:

б) при введении в одно из полей символа(ов), не являющегося(ихся) цифрой(ами):

в) при введении в поле Nmin значения, превышающего значение в поле Nmax:

г) при введении неположительного числа(чисел) либо числа(чисел), превышающего(их) максимально допустимое значение - 65535:

2. Поиск и вычисление времени, затраченного на поиск и сортировку

Для включения режима поиска необходимо нажать кнопку с надписью «ПОИСК»

При верно введенных данных режим поиска успешно начнёт работу, о чём будет свидетельствовать отсутствие диалоговых окон после нажатия кнопки «ПОИСК». После окончания вышеуказанного процесса результаты будут представлены в таблицы 1 и 2, а также выведены в виде графиков соответствующих функций для дальнейшего анализа.

3. Анализ.

Как уже было сказано ранее, данные для анализа будут представлены в таблицах 1 и 2, а также в виде кривых.

Таблица 1 состоит из следующих граф:

- N (длина таблицы),

- tЛП1 (N) – время первого линейного поиска,

- tлп2 (N) – время второго линейного поиска,

- tДП (N) – время двоичного поиска,

tЛП-М (N) – время поиска с накоплением запросов.

Вторая таблица имеет следующие графы:

- N,

- tлп2 (N)+ tсА (N), где tСА (N) – время сортировки файла А,

- tДп (N)+ tсА (N),

- tлп-М (N)+ tсА (N)+ tсВ (N).

Справа от каждой таблицы изображены графики соответствующих функций, которые можно просматривать как вместе, так и по отдельности, для чего необходимо выбрать соответствующее положение кнопки(ок) RadioButton:

или так:

Для просмотра определённого графика необходимо выбрать соответствующее название в выпадающем списке справа от панели с кнопками переключения режима вывода графиков (при этом, конечно, должен быть включен режим «ПО ОТДЕЛЬНОСТИ»).

При удовлетворительных результатах можно перейти к завершению приложения, в противном случае же – ввести новые данные и начать новый поиск (см. п.1).

4. Выход из программы.

Для завершения приложения необходимо нажать на кнопку «ЗАКРЫТЬ» или на крестик в правом верхнем углу.

ЗАКЛЮЧЕНИЕ

Приложение (исходные тексты всех модулей)

Исходный текст модуля Project.dpr:

program Project;

uses

Forms,

MainForm in 'MainForm.pas' {Form1};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

Исходный текст модуля MainForm.pas:

unit MainForm;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Buttons, Grids,

Series;

type

TForm1 = class(TForm)

sgTb2: TStringGrid;

sgTb1: TStringGrid;

Label1: TLabel;

Label2: TLabel;

btFind: TButton;

btClose: TBitBtn;

rbTog1: TRadioButton;

rbEve1: TRadioButton;

cbSel1: TComboBox;

edNmin: TEdit;

edNmax: TEdit;

edLen: TEdit;

Label4: TLabel;

Chart1: TChart;

Series1: TLineSeries;

Series2: TLineSeries;

Series3: TLineSeries;

Series4: TLineSeries;

edStep: TEdit;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Chart2: TChart;

rbTog2: TRadioButton;

rbEve2: TRadioButton;

cbSel2: TComboBox;

Series5: TLineSeries;

Series6: TLineSeries;

Series7: TLineSeries;

Panel1: TPanel;

Panel2: TPanel;

procedure rbEve1Click(Sender: TObject);

procedure rbTog1Click(Sender: TObject);

procedure btFindClick(Sender: TObject);

procedure LinFind;

procedure BinFind;

procedure LinFindAcc;

procedure SortA;

procedure SortB;

procedure Verify;

procedure rbValClick(Sender: TObject);

procedure rbIntClick(Sender: TObject);

procedure Fill;

procedure FormCreate(Sender: TObject);

procedure cbSel1Change(Sender: TObject);

procedure rbTog2Click(Sender: TObject);

procedure rbEve2Click(Sender: TObject);

procedure cbSel2Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

A : file of Word;

B, arA : array of Word;

Nmin, Nmax, Step, K, t, i, rnd, Fval : Word;

SortA1, SortA2, SortAB, LinF1, LinF2, BinF, LinFAcc: array [0..1, 1..4, 1..65535] of Word;

TSortA1, TSortA2, TSortAB, TLinF1, TLinF2, TBinF, TLinFAcc: array [1..65535] of Word;

Acc : array [1..3, 1..65535] of Word;

implementation

{$R *.dfm}

procedure TForm1.Fill;

var

r : Integer;

begin

Rewrite(A);

for r:=1 to i do //Наполнение файла

begin //случайными значениями

Fval:=Random(64000);

Write(A, Fval);

end;

end;

procedure TForm1.LinFind; //Линейный поиск

var

s1, s2 : Word;

begin

for s1:=0 to K-1 do

for s2:=0 to i-1 do

begin

Seek(A, s2);

Read(A, Fval);

if (B[s1]=Fval) then Exit;

end;

end;

procedure TForm1.BinFind; //Двоичный поиск

var

s1, cou, cou1, cou2 : integer;

label

1;

begin

for s1:=0 to K-1 do

begin

cou1:=0;

cou2:=i-1;

While cou1<=cou2 do

begin

cou:=(cou2+cou1) div 2;

Seek(A, cou);

Read(A, Fval);

if (Fval=B[s1]) then goto 1

else if Fval<B[s1] then cou1:=cou+1

else cou2:=cou-1;

end;

1 : end;

end;

procedure TForm1.LinFindAcc; //Линейный поиск с накоплением

var

s1, s2, cou : Word;

begin

cou:=1;

for s1:=0 to K-1 do

for s2:=0 to i-1 do

begin

Seek(A, s2);

Read(A, Fval);

if (B[s1]=Fval) then

begin

Acc[1, cou]:=s2;

Acc[2, cou]:=s1;

Acc[3, cou]:=Fval;

cou:=cou+1;

end;

end;

end;

procedure TForm1.SortA; //Сортировка файла A

var

r, d : integer;

tmp, val : Word;

begin

SetLength(arA, i);

for r:=0 to i-1 do

begin

Seek(A, r);

Read(A, val);

arA[r]:=val;

end;

for r:=0 to i-2 do

for d:=r+1 to i-1 do

begin

if (arA[r]>arA[d]) then

begin

tmp:=arA[r];

arA[r]:=arA[d];

arA[d]:=tmp;

end;

end;

Rewrite(A);

for r:=0 to i-1 do Write(A, arA[r]);

end;

procedure TForm1.SortB; //Сортировка вектора B

var

r, d : integer;

tmp : Word;

begin

for r:=0 to K-2 do

for d:=r+1 to K-1 do

begin

if (B[r]>B[d]) then

begin

tmp:=B[r];

B[r]:=B[d];

B[d]:=tmp;

end;

end;

end;

procedure TForm1.Verify; //Проверка

begin

if (edNmin.Text='') or (edNmax.Text='') or (edStep.Text='') or (edLen.Text='') then

begin

ShowMessage('Укажите значения всех параметров!');

Abort;

end;

try

Nmin:=StrToInt(edNmin.Text);

Nmax:=StrToInt(edNmax.Text);

Step:=StrToInt(edStep.Text);

K:=StrToInt(edLen.Text);

except

ShowMessage('Некоторые параметры указаны неверно!');

Abort;

end;

if (StrToInt(edNmin.Text)<=0) or (StrToInt(edNmax.Text)<=0) or

(StrToInt(edStep.Text)<=0) or (StrToInt(edLen.Text)<=0) or

(StrToInt(edNmin.Text)>65535) or (StrToInt(edNmin.Text)>65535) or

(StrToInt(edStep.Text)>65535) or (StrToInt(edLen.Text)>65535) then

begin

ShowMessage('Значения должны лежать в интервале 1..65535!');

Abort;

end;

if (StrToInt(edNmin.Text)>=StrToInt(edNmax.Text)) then

begin

ShowMessage('Максимальное значение таблицы должно быть меньше минимального!');

Abort;

end;

end;

procedure TForm1.rbEve1Click(Sender: TObject);

begin

cbSel1.Enabled:=true;

Chart1.Series[1].Active:=false;

Chart1.Series[2].Active:=false;

Chart1.Series[3].Active:=false;

Chart1.Series[0].Active:=false;

Chart1.Series[cbSel1.ItemIndex].Active:=true;

end;

procedure TForm1.rbTog1Click(Sender: TObject);

begin

cbSel1.Enabled:=false;

Chart1.Series[1].Active:=true;

Chart1.Series[2].Active:=true;

Chart1.Series[3].Active:=true;

Chart1.Series[0].Active:=true;

end;

procedure TForm1.btFindClick(Sender: TObject);

begin

Verify;

AssignFile(A, 'file.bin');

Rewrite(A);

sgTb1.ColCount:=5;

sgTb1.RowCount:=Nmax-Nmin;

SetLength(B, K); //Размер вектора B

for t:=0 to K-1 do //Наполнение вектора

begin //случайными значениями

rnd:=Random(64000);

B[t]:=rnd;

end;

t:=1;

i:=Nmin;

While i<Nmax do //Первый линейный поиск

begin

Fill; //Наполнение файла

DecodeTime(Time, LinF1[0, 1, t], LinF1[0, 2, t], LinF1[0, 3, t], LinF1[0, 4, t]);

LinFind;

DecodeTime(Time, LinF1[1, 1, t], LinF1[1, 2, t], LinF1[1, 3, t], LinF1[1, 4, t]);

TLinF1[t]:=Linf1[1, 4, t]+1000*LinF1[1, 3, t]-Linf1[0, 4, t]-1000*LinF1[0, 3, t];

sgTb1.Cells[0, t]:=FloatToStr(i);

sgTb1.Cells[1, t]:=FloatToStr(TLinF1[t]);

Chart1.SeriesList[0].AddXY(i, TLinF1[t], '');

i:=i+Step;

t:=t+1;

end;

if i>=Nmax then //Поиск при

begin //размере таблицы Nmax

i:=Nmax;

Fill;

DecodeTime(Time, LinF1[0, 1, t], LinF1[0, 2, t], LinF1[0, 3, t], LinF1[0, 4, t]);

LinFind;

DecodeTime(Time, LinF1[1, 1, t], LinF1[1, 2, t], LinF1[1, 3, t], LinF1[1, 4, t]);

TLinF1[t]:=Linf1[1, 4, t]+1000*LinF1[1, 3, t]-Linf1[0, 4, t]-1000*LinF1[0, 3, t];

sgTb1.Cells[0, t]:=FloatToStr(i);

sgTb1.Cells[1, t]:=FloatToStr(TLinF1[t]);

Chart1.SeriesList[0].AddXY(i, TLinF1[t], '');

end;

t:=1;

i:=Nmin;

While i<Nmax do //Второй линейный поиск

begin

Fill;

DecodeTime(Time, SortA1[0, 1, t], SortA1[0, 2, t], SortA1[0, 3, t], SortA1[0, 4, t]);

SortA; //Сортировка файла A

DecodeTime(Time, LinF2[0, 1, t], LinF2[0, 2, t], LinF2[0, 3, t], LinF2[0, 4, t]);

LinFind;

DecodeTime(Time, LinF2[1, 1, t], LinF2[1, 2, t], LinF2[1, 3, t], LinF2[1, 4, t]);

TLinF2[t]:=Linf2[1, 4, t]+1000*LinF2[1, 3, t]-Linf2[0, 4, t]-1000*LinF2[0, 3, t];

TSortA1[t]:=Linf2[1, 4, t]+1000*LinF2[1, 3, t]-SortA1[0, 4, t]-1000*SortA1[0, 3, t];

sgTb1.Cells[2, t]:=FloatToStr(TLinF2[t]);

sgTb2.Cells[0, t]:=FloatToStr(i);

sgTb2.Cells[1, t]:=FloatToStr(TSortA1[t]);

Chart1.SeriesList[1].AddXY(i, TLinF2[t], '');

Chart2.SeriesList[0].AddXY(i, TSortA1[t], '');

i:=i+Step;

t:=t+1;

end;

if i>=Nmax then //Поиск при

begin //размере таблицы Nmax

i:=Nmax;

Fill;

DecodeTime(Time, SortA1[0, 1, t], SortA1[0, 2, t], SortA1[0, 3, t], SortA1[0, 4, t]);

SortA;

DecodeTime(Time, LinF2[0, 1, t], LinF2[0, 2, t], LinF2[0, 3, t], LinF2[0, 4, t]);

LinFind;

DecodeTime(Time, LinF2[1, 1, t], LinF2[1, 2, t], LinF2[1, 3, t], LinF2[1, 4, t]);

TLinF2[t]:=Linf2[1, 4, t]+1000*LinF2[1, 3, t]-Linf2[0, 4, t]-1000*LinF2[0, 3, t];

TSortA1[t]:=Linf2[1, 4, t]+1000*LinF2[1, 3, t]-SortA1[0, 4, t]-1000*SortA1[0, 3, t];

sgTb2.Cells[0, t]:=FloatToStr(i);

sgTb1.Cells[2, t]:=FloatToStr(TLinF2[t]);

sgTb2.Cells[1, t]:=FloatToStr(TSortA1[t]);

Chart1.SeriesList[1].AddXY(i, TLinF2[t], '');

Chart2.SeriesList[0].AddXY(i, TSortA1[t], '');

end;

t:=1;

i:=Nmin;

While i<Nmax do //Двоичный поиск

begin

Fill;

DecodeTime(Time, SortA2[0, 1, t], SortA2[0, 2, t], SortA2[0, 3, t], SortA2[0, 4, t]);

SortA;

DecodeTime(Time, BinF[0, 1, t], BinF[0, 2, t], BinF[0, 3, t], BinF[0, 4, t]);

BinFind;

DecodeTime(Time, BinF[1, 1, t], BinF[1, 2, t], BinF[1, 3, t], BinF[1, 4, t]);

TBinF[t]:=BinF[1, 4, t]+1000*BinF[1, 3, t]-BinF[0, 4, t]-1000*BinF[0, 3, t];

TSortA2[t]:=BinF[1, 4, t]+1000*BinF[1, 3, t]-SortA2[0, 4, t]-1000*SortA2[0, 3, t];

sgTb1.Cells[3, t]:=FloatToStr(TBinF[t]);

sgTb2.Cells[2, t]:=FloatToStr(TSortA2[t]);

Chart1.SeriesList[2].AddXY(i, TBinF[t], '');

Chart2.SeriesList[1].AddXY(i, TSortA2[t], '');

i:=i+Step;

t:=t+1;

end;

if i>=Nmax then //Поиск при

begin //размере таблицы Nmax

i:=Nmax;

Fill;

DecodeTime(Time, SortA2[0, 1, t], SortA2[0, 2, t], SortA2[0, 3, t], SortA2[0, 4, t]);

SortA;

DecodeTime(Time, BinF[0, 1, t], BinF[0, 2, t], BinF[0, 3, t], BinF[0, 4, t]);

LinFind;

DecodeTime(Time, BinF[1, 1, t], BinF[1, 2, t], BinF[1, 3, t], BinF[1, 4, t]);

TBinF[t]:=BinF[1, 4, t]+1000*BinF[1, 3, t]-BinF[0, 4, t]-1000*BinF[0, 3, t];

TSortA2[t]:=BinF[1, 4, t]+1000*BinF[1, 3, t]-SortA2[0, 4, t]-1000*SortA2[0, 3, t];

sgTb1.Cells[3, t]:=FloatToStr(TBinF[t]);

sgTb2.Cells[2, t]:=FloatToStr(TSortA2[t]);

Chart1.SeriesList[2].AddXY(i, TBinF[t], '');

Chart2.SeriesList[1].AddXY(i, TSortA2[t], '');

end;

t:=1;

i:=Nmin;

While i<Nmax do //Линейный поиск

begin //с накоплением

Fill;

DecodeTime(Time, SortAB[0, 1, t], SortAB[0, 2, t], SortAB[0, 3, t], SortAB[0, 4, t]);

SortA;

SortB; //Сортировка вектора B

DecodeTime(Time, LinFAcc[0, 1, t], LinFAcc[0, 2, t], LinFAcc[0, 3, t], LinFAcc[0, 4, t]);

LinFindAcc;

DecodeTime(Time, LinFAcc[1, 1, t], LinFAcc[1, 2, t], LinFAcc[1, 3, t], LinFAcc[1, 4, t]);

TLinFAcc[t]:=LinFAcc[1, 4, t]+1000*LinFAcc[1, 3, t]-LinFAcc[0, 4, t]-1000*LinFAcc[0, 3, t];

TSortAB[t]:=LinFAcc[1, 4, t]+1000*LinFAcc[1, 3, t]-SortAB[0, 4, t]-1000*SortAB[0, 3, t];

sgTb1.Cells[4, t]:=FloatToStr(TLinFAcc[t]);

sgTb2.Cells[3, t]:=FloatToStr(TSortAB[t]);

Chart1.SeriesList[3].AddXY(i, TLinFAcc[t], '');

Chart2.SeriesList[2].AddXY(i, TSortAB[t], '');

i:=i+Step;

t:=t+1;

end;

if i>=Nmax then //Поиск при

begin //размере таблицы Nmax

i:=Nmax;

Fill;

DecodeTime(Time, SortAB[0, 1, t], SortAB[0, 2, t], SortAB[0, 3, t], SortAB[0, 4, t]);

SortA;

SortB;

DecodeTime(Time, LinFAcc[0, 1, t], LinFAcc[0, 2, t], LinFAcc[0, 3, t], LinFAcc[0, 4, t]);

LinFindAcc;

DecodeTime(Time, LinFAcc[1, 1, t], LinFAcc[1, 2, t], LinFAcc[1, 3, t], LinFAcc[1, 4, t]);

TLinFAcc[t]:=LinFAcc[1, 4, t]+1000*LinFAcc[1, 3, t]-LinFAcc[0, 4, t]-1000*LinFAcc[0, 3, t];

TSortAB[t]:=LinFAcc[1, 4, t]+1000*LinFAcc[1, 3, t]-SortAB[0, 4, t]-1000*SortAB[0, 3, t];

sgTb1.Cells[4, t]:=FloatToStr(TLinFAcc[t]);

sgTb2.Cells[3, t]:=FloatToStr(TSortAB[t]);

Chart1.SeriesList[3].AddXY(i, TLinFAcc[t], '');

Chart2.SeriesList[2].AddXY(i, TSortAB[t], '');

end;

sgTb1.RowCount:=t+1;

CloseFile(A);

Erase(A);

Finalize(B);

end;

procedure TForm1.rbValClick(Sender: TObject);

begin

edNmax.Visible:=false;

edStep.Visible:=false;

end;

procedure TForm1.rbIntClick(Sender: TObject);

begin

edNmax.Visible:=true;

edStep.Visible:=true;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Randomize;

sgTb1.Cells[0, 0]:='N';

sgTb1.Cells[1, 0]:='tЛП1';

sgTb1.Cells[2, 0]:='tЛП2';

sgTb1.Cells[3, 0]:='tДП';

sgTb1.Cells[4, 0]:='tЛП-М';

sgTb2.Cells[0, 0]:='N';

sgTb2.Cells[1, 0]:='tЛП2+tСA';

sgTb2.Cells[2, 0]:='tДП+tСA';

sgTb2.Cells[3, 0]:='tЛП-М+tС';

cbSel1.ItemIndex:=0;

cbSel2.ItemIndex:=0;

rbTog1.Checked:=true;

rbTog2.Checked:=true;

end;

procedure TForm1.cbSel2Change(Sender: TObject);

begin

Chart2.Series[0].Active:=false;

Chart2.Series[1].Active:=false;

Chart2.Series[2].Active:=false;

Chart2.Series[cbSel2.ItemIndex].Active:=true;

end;

procedure TForm1.cbSel1Change(Sender: TObject);

begin

Chart1.Series[1].Active:=false;

Chart1.Series[2].Active:=false;

Chart1.Series[3].Active:=false;

Chart1.Series[0].Active:=false;

Chart1.Series[cbSel1.ItemIndex].Active:=true;

end;

procedure TForm1.rbEve2Click(Sender: TObject);

begin

cbSel2.Enabled:=true;

Chart2.Series[0].Active:=false;

Chart2.Series[1].Active:=false;

Chart2.Series[2].Active:=false;

Chart2.Series[cbSel2.ItemIndex].Active:=true;

end;

procedure TForm1.rbTog2Click(Sender: TObject);

begin

cbSel2.Enabled:=false;

Chart2.Series[0].Active:=true;

Chart2.Series[1].Active:=true;

Chart2.Series[2].Active:=true;

end;

end.

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Где скачать еще рефератов? Здесь: letsdoit777.blogspot.com
Евгений06:43:50 19 марта 2016
Кто еще хочет зарабатывать от 9000 рублей в день "Чистых Денег"? Узнайте как: business1777.blogspot.com ! Cпециально для студентов!
19:50:16 28 ноября 2015

Работы, похожие на Курсовая работа: Структуры и организация данных в ЭВМ

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(151303)
Комментарии (1844)
Copyright © 2005-2016 BestReferat.ru bestreferat@mail.ru       реклама на сайте

Рейтинг@Mail.ru