Алгоритми і організація даних

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне агентство з освіти РФ

ФГТУ СПО «Перевозскій будівельний коледж»

Лабораторна робота з дисципліни «Бази даних»

на тему: «АЛГОРИТМИ І ОРГАНІЗАЦІЯ ДАНИХ»

Підготував студент 351 групи: Дмитрієв А.С.

Перевірила: Патлай Н.А.

Завдання 3.1

Напишіть програму послідовного пошуку в послідовному відсортованого масиву реквізитів єдиного значення q. Використовуйте будь-який доступний вам мову програмування.

Рішення:

Код програми:

unit Proga;

interface

uses

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

Dialogs, StdCtrls, Grids, jpeg, ExtCtrls;

type

TForm1 = class (TForm)

StringGrid1: TStringGrid;

Edit1: TEdit;

Button1: TButton;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Image1: TImage;

Label2: TLabel;

Label1: TLabel;

Label3: TLabel;

procedure Button1Click (Sender: TObject);

procedure FormActivate (Sender: TObject);

procedure Edit2KeyPress (Sender: TObject; var Key: Char);

procedure Edit3KeyPress (Sender: TObject; var Key: Char);

procedure Edit4KeyPress (Sender: TObject; var Key: Char);

procedure Edit5KeyPress (Sender: TObject; var Key: Char);

procedure Edit6KeyPress (Sender: TObject; var Key: Char);

procedure StringGrid1KeyPress (Sender: TObject; var Key: Char);

procedure Edit1KeyPress (Sender: TObject; var Key: Char);

procedure StringGrid1Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

implementation

{$ R *. dfm}

{Пошук в масиві перебором}

procedure TForm1.Button1Click (Sender: TObject);

Const

SIZE = 5;

Var

a: Array [1 .. SIZE] of Integer; / / масив

obr: Integer; / / зразок для пошуку

found: Boolean; / / TRUE - збіг зразка з елементом масиву

i: Integer; / / індекс елемента масиву

begin

If Length (StringGrid1.Cells [0,0])> 3 then

begin

ShowMessage ('Помилка в P (1)! Не можна ввести число більше "999 ".');

StringGrid1.Cells [0,0 ]:='';

Exit;

end;

If Length (StringGrid1.Cells [1,0])> 3 then

begin

ShowMessage ('Помилка в P (2)! Не можна ввести число більше "999 ".');

StringGrid1.Cells [1,0 ]:='';

Exit;

end;

If Length (StringGrid1.Cells [2,0])> 3 then

begin

ShowMessage ('Помилка в P (3)! Не можна ввести число більше "999 ".');

StringGrid1.Cells [2,0 ]:='';

Exit;

end;

If Length (StringGrid1.Cells [3,0])> 3 then

begin

ShowMessage ('Помилка в P (4)! Не можна ввести число більше "999 ".');

StringGrid1.Cells [3,0 ]:='';

Exit;

end;

If Length (StringGrid1.Cells [4,0])> 3 then

begin

ShowMessage ('Помилка в P (5)! Не можна ввести число більше "999 ".');

StringGrid1.Cells [4,0 ]:='';

Exit;

end;

If Length (Edit1.Text)> 3 then

begin

ShowMessage ('Помилка в "Зразок"! Не можна ввести число більше "999 ".');

Edit1.Text :='';

Exit;

end;

If (StringGrid1.Cells [0,0 ]='') or (StringGrid1.Cells [1,0 ]='') or (StringGrid1.Cells [2,0 ]='') or (StringGrid1.Cells [3, 0 ]='') or (StringGrid1.Cells [4,0 ]='') then

begin

ShowMessage ('Введені не всі елементи рівняння. ПРОДОВЖЕННЯ НЕМОЖЛИВО!');

Exit;

end;

If (Edit1.Text ='') then

begin

ShowMessage ('Не введений зразок. ПРОДОВЖЕННЯ НЕМОЖЛИВО!');

Exit;

end;

/ / Введення масиву

For i: = 1 to SIZE do

a [i]: = StrToInt (StringGrid1.Cells [i-1, 0]);

If Length (StringGrid1.Cells [0,0]) = 0 then

begin

ShowMessage ('Введені не всі елементи масиву !!!');

Exit;

end;

/ / Введення зразка для пошуку

obr: = StrToInt (Edit1.Text);

/ / Пошук

found: = FALSE; / / хай потрібного елемента в масиві немає

i: = 1;

Repeat

If a [i] = obr then

found: = TRUE else

i: = i +1;

Until (i> SIZE) or (found = TRUE);

If found then

ShowMessage ('Збіг з елементом номер P ('+ IntToStr (i )+').'+# 13 +' Пошук успішний. ') else

ShowMessage ('Збіг із зразком немає.');

end;

procedure TForm1.FormActivate (Sender: TObject);

begin

Edit2.Text: = 'P (1)';

Edit3.Text: = 'P (2)';

Edit4.Text: = 'P (3)';

Edit5.Text: = 'P (4)';

Edit6.Text: = 'P (5)';

end;

procedure TForm1.Edit2KeyPress (Sender: TObject; var Key: Char);

begin

Key: = Chr (0);

end;

procedure TForm1.Edit3KeyPress (Sender: TObject; var Key: Char);

begin

Key: = Chr (0);

end;

procedure TForm1.Edit4KeyPress (Sender: TObject; var Key: Char);

begin

Key: = Chr (0);

end;

procedure TForm1.Edit5KeyPress (Sender: TObject; var Key: Char);

begin

Key: = Chr (0);

end;

procedure TForm1.Edit6KeyPress (Sender: TObject; var Key: Char);

begin

Key: = Chr (0);

end;

procedure TForm1.StringGrid1KeyPress (Sender: TObject; var Key: Char);

begin

Case Key of

"0" .. '9 ':;

# 8:;

else

Key: = Chr (0);

end;

end;

procedure TForm1.Edit1KeyPress (Sender: TObject; var Key: Char);

begin

Case Key of

"0" .. '9 ':;

# 8:;

else

Key: = Chr (0);

end;

end;

procedure TForm1.StringGrid1Click (Sender: TObject);

begin

If StringGrid1.Cells [0,0] = StringGrid1.Cells [1,0] then

begin

If Length (StringGrid1.Cells [0,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

If Length (StringGrid1.Cells [1,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

StringGrid1.Cells [0,0 ]:='';

StringGrid1.Cells [1,0 ]:='';

end;

If StringGrid1.Cells [0,0] = StringGrid1.Cells [2,0] then

begin

If Length (StringGrid1.Cells [0,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

If Length (StringGrid1.Cells [2,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

StringGrid1.Cells [0,0 ]:='';

StringGrid1.Cells [2,0 ]:='';

end;

If StringGrid1.Cells [0,0] = StringGrid1.Cells [3,0] then

begin

If Length (StringGrid1.Cells [0,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

If Length (StringGrid1.Cells [3,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

StringGrid1.Cells [0,0 ]:='';

StringGrid1.Cells [3,0 ]:='';

end;

If StringGrid1.Cells [0,0] = StringGrid1.Cells [4,0] then

begin

If Length (StringGrid1.Cells [0,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

If Length (StringGrid1.Cells [4,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

StringGrid1.Cells [0,0 ]:='';

StringGrid1.Cells [4,0 ]:='';

end;

If StringGrid1.Cells [1,0] = StringGrid1.Cells [2,0] then

begin

If Length (StringGrid1.Cells [1,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

If Length (StringGrid1.Cells [2,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

StringGrid1.Cells [1,0 ]:='';

StringGrid1.Cells [2,0 ]:='';

end;

If StringGrid1.Cells [1,0] = StringGrid1.Cells [3,0] then

begin

If Length (StringGrid1.Cells [1,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

If Length (StringGrid1.Cells [3,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

StringGrid1.Cells [1,0 ]:='';

StringGrid1.Cells [3,0 ]:='';

end;

If StringGrid1.Cells [1,0] = StringGrid1.Cells [4,0] then

begin

If Length (StringGrid1.Cells [1,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

If Length (StringGrid1.Cells [4,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

StringGrid1.Cells [1,0 ]:='';

StringGrid1.Cells [4,0 ]:='';

end;

If StringGrid1.Cells [2,0] = StringGrid1.Cells [3,0] then

begin

If Length (StringGrid1.Cells [2,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

If Length (StringGrid1.Cells [3,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

StringGrid1.Cells [2,0 ]:='';

StringGrid1.Cells [3,0 ]:='';

end;

If StringGrid1.Cells [2,0] = StringGrid1.Cells [4,0] then

begin

If Length (StringGrid1.Cells [2,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

If Length (StringGrid1.Cells [4,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

StringGrid1.Cells [2,0 ]:='';

StringGrid1.Cells [4,0 ]:='';

end;

If StringGrid1.Cells [3,0] = StringGrid1.Cells [4,0] then

begin

If Length (StringGrid1.Cells [3,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

If Length (StringGrid1.Cells [4,0]) <> 0 then

begin

ShowMessage ('Не можна ввести однакові числа !!!');

end;

StringGrid1.Cells [3,0 ]:='';

StringGrid1.Cells [4,0 ]:='';

end;

end;

end.

Скріншот:



Завдання 3.9

Реалізує чи наведена нижче програма алгоритм сортування простим вибором?

PROGRAM Simple_Select;

Const N = 400;

Var J, I, K: Integer;

Max, Ind: Integer;

A: Array [0 .. N] of Integer;

BEGIN

For I: = 0 to N do

Begin

A [I]: = Random (N);

Write (A [I]: 4);

end;

For J: = N downto 1 do

begin

Max: = A [J];

Ind: = J;

For I: = J downto 0 do

If A [I]> Max then

Begin

Max: = A [I];

Ind: = I;

end;

If Ind <> J then

Begin

К: = A [Ind];

A [Ind]: = A [J];

A [J]: = К;

End;

end;

For I: = 0 to N do

Write (A [I]: 4);

END.

Рішення:

Скріншот:

Наведена програма не реалізує алгоритм сортування простим вибором.



Завдання 3.12

Напишіть програму індексування основного файлу по одному реквізиту. Використовуйте будь-який доступний вам мову програмування.

Рішення:

Індексування основного файлу по одному реквізиту будемо робити на прикладі ось цієї таблиці:

А

У

З

1

Перший завод

Стілець

2

Другий завод

Стіл

3

Третій завод

Комп'ютер

Індексування файлу будемо робити з реквізиту «A».

Індексний файл буде виглядати так:

А

З

1

Стілець

2

Стіл

3

Комп'ютер

Алгоритм програми:

  1. Запуск програми.

  2. Введення розмірів таблиці, тобто кількість стовпців і рядків.

  3. Введення всіх записів таблиці.

  4. Запис цієї таблиці у файл «Baza. Txt».

  5. Введення назви реквізитів, за якими потрібно індексувати файл.

  6. Перевірка всіх записів основного реквізиту на впорядкованість, тобто розташування за зростанням або спаданням (за алфавітом або по цифрах):

    1. Якщо всі записи впорядковані, то:

  1. Якщо записів в реквізиті менше 10, то в індексі необхідно поміщати покажчик на кожен запис.

  2. Якщо записів в реквізиті більше 10, то в індексі необхідно поміщати покажчик не на кожен запис, а на ключі, які будуть створюватися, наприклад, з проміжком в 7 записів (проміжок залежить від того, скільки записів в реквізиті всього знаходиться).

2) Якщо всі записи не впорядковані, то, в індексі необхідно поміщати покажчик на кожен запис, а сам індексний файл можна впорядкувати за значеннями ключа індексування.

  1. Запис індексованої таблиці у файл «Index. Txt».

  2. Вихід з програми.



Завдання 3.17

Розгляньте файл з двох реквізитів А і В з першим записом (11,8) і наступними значеннями А і В, одержуваними за формулами:

складається з 25 записів. Створіть індексні файли за реквізитами А і В і двом реквізитами спільно. Необхідні додаткові параметри виберіть самостійно.

Рішення:


Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Лабораторна робота
64.4кб. | скачати


Схожі роботи:
Алгоритми стиснення даних 2
Алгоритми стиснення даних
Алгоритми і структури даних Програмування у Cі
Структури та алгоритми обробки даних
Організація баз даних
Організація баз даних
Фізична організація баз даних на машинних носіях
Організація та застосування мікропроцесорних систем обробки даних і управління
Статистичні функції в Excel Електронна таблиця як база даних Організація розгалужень
© Усі права захищені
написати до нас