У вас вопросы?
У нас ответы:) SamZan.net

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

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 29.12.2024

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

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

ФГОУ СПО «Перевозский строительный колледж»

 

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

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

Подготовил студент 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) Если все записи не упорядочены, то, в индексе необходимо помещать указатель на каждую запись, а сам индексный файл можно упорядочить по значениям ключа индексирования.

7.         Запись индексированной таблицы в файл «Index.txt».

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

Задание 3.17

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

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

Решение:




1. . Увядзенне расійскім урадам новага адміністрацыйнатэрытарыяльнага падзелу арганізацыя кіравання змены ў
2. водевиля на темы русской культуры -В пьесе использованы письма В
3. Контрольная работа по предмету Основы социологии и политологии Вариант I Дайте определение понятия
4. Вегетативно-сосудистая дистония
5. Об утверждении Министерств был образован ряд министерств в том числе Министерство финансов Российской им
6. Мировой город. Крупные миллионники мегалополисы
7. нелегком ремесле спасателя
8. работа и событие
9. Порошки. Бакирова Гульназ ~ 51
10. . Индивидуальные ~ это потребители приобретающие товары только для своих личных нужд
11. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата психологічних наук
12. В каком законодательном акте Российской Федерации определен порядок установления содержания норм иностра.html
13. Курсовая работа по теме- Исследование зависимости акцентуаций характера подростков от стиля семейного в
14. Жизненный цикл инвестиционного проекта
15. ЛЕСНОЙ НА ЛЕТНИЙ СЕЗОН 2014 года
16. на тему- Воспроизводство общественных благ и внешние эффекты- сущность и формы регулирования Ог
17. Особистості та перспективи розвитку фондового ринку України
18. Сердечно-сосудистые заболевания.html
19. Повелитель мух Голдинг Уильям
20. Сущность, структура, виды, средства и способы коммуникаций в организации