Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика АиУ.doc
Скачиваний:
20
Добавлен:
09.11.2018
Размер:
1.56 Mб
Скачать

Лабораторная работа №9 Составление программ поиска, сортировки и накапливания результата

Цель занятия: ознакомление с задачами поиска сортировки и накапливание результата, и приобретение навыков составления программ для решения этих задач.

1. Задача поиска

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

Пример 9.1. Найти максимальный элемент массива А(n).

Введем переменную max, в которой будем хранить максимальное значение из рассмотренных на данный момент. По окончании перебора в ней будет храниться искомое значение. В качестве начального значения max целесообразно выбрать значение первого элемента массива, а просмотр массива начинать со второго элемента. Блок-схема алгоритма приведена на рис.9.1.

Рис.9.1. Блок схема алгоритма поиска максимального элемента массива A

В результате работы алгоритма переменная max получит значение равное максимальному числу в массиве А. При изменении критерия отбора меняется тело цикла, но сама циклическая структура решения сохраняется.

2.Реализация алгоритма поиска максимального элемента в среде Delphi

После запуска Delphi и открытия окна формы (модуль Form1) разместим в нем следующие объекты:

  • поле редактирования Edit1 – для вывода результатов поиска;

  • метки Label1Label2 – для вывода заголовков, пояснений и результатов;

  • кнопки Button1 и Bitbtn1 – для управления работой программы;

  • таблица StringGrid1 для ввода исходного массива.

Для этого на панели визуальных компонент (вкладки Standard и Additions) щелчком мыши выбираются объекты Edit, Label, Button, Bitbtn и StringGrid и вставляются в указываемое курсором место формы. Далее с помощью инспектора объектов (Object Inspector) определяются заголовки объектов Form1, Label1, Label2 путем ввода соответствующего текста в поле Caption вкладки Properties. Например, для окна Form1 в поле Caption вводится текст «Программа нахождения максимального элемента»; для метки Label1 – «введите элементы массива», для метки Label2 – «максимальный элемент массива», для кнопки Button1 – «найти».

Общий вид окна формы с выбранными компонентами представлен на рис.9.2.

Рис.9.2. Окно формы (модуль Form1) программы в Delphi

При размещении в окне формы объектов автоматически добавляются соответствующие этим объектам описания в исходный код программы (модуль Unit1).

Для управления работой программы с каждой кнопкой связывается событие Щелкнуть (Click) и задается, что при щелчке на кнопке 1 (объект Button1) программа должна ввести массив из полей таблицы StringGrid1. Далее после двойного щелчка кнопки Button2 и попадания снова в окно кода вводятся операторы, реализующие алгоритм поиска максимального элемента и вывод его в поле Text объекта Edit1. В результате, в окне кода будет представлен следующий текст программы:

unit Unit1;

interface

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

Dialogs, StdCtrls, Grids, Buttons;

Type TForm1 = class(TForm)

StringGrid1: TStringGrid;

Edit1: TEdit;

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);// поиск максимума

const n=10;

var a:array[1..10] of real;//описание исходного массива

i, j :integer; // параметры циклов

max :real;// здесь будет храниться максимальный элемент

begin

for i:=1 to n do // считываем элементы массива из StringGrid1

a[i]:=strToFloat(form1.StringGrid1.cells[0,i-1]);// преобразуем строку в число

max:=A[1];

for i:=2 to n do

if max<A[i] then max:=A[i] ;

form1.Edit1.Text:=floatToStr(max) // вывод результата в элемент edit1

end; end.

Трансляция и запуск на выполнение программы производится с помощью команды Run меню Run или нажатия клавиши F9. Если выдается сообщение об ошибках, то их следует исправить и снова запустить программу на выполнение. При отсутствии в программе синтаксических ошибок откроется окно аналогичное окну формы (рис.9.2), и далее программа будет ожидать действий пользователя. Пользователь может задать значения исходного массива, щелкнуть кнопку Button1 для нахождения максимума или щелкнуть кнопку Bitbtn1 для завершения работы программы. На рис.9.3 показан результат работы программы

Рис.9.3. Результаты работы программы

Пример 9.2. Найти номер наименьшего по модулю элемента в массиве А(n).

Рис.9.4. Блок схема алгоритма поиска номера наименьшего по модулю элемента

По окончании работы программы переменная k будет указывать на номер наименьшего по модулю элемента в массиве А(n), а min будет равно этому минимуму.