Лабораторная работа по дисциплине «Базы данных» на тему: «АЛГОРИТМЫ И ОРГАНИЗАЦИЯ ДАННЫХ» Задание 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 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 записей. Создайте индексные файлы по реквизитам А и В и двум реквизитам совместно. Необходимые дополнительные параметры выберите самостоятельно. Решение:
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |