
лабораторная работа / лабораторные работы по LAZARUS / Отчет спо лазарус лаба автомат
.docxПрограммирование алгоритмов с использованием динамических структур данных
Цель лабораторной работы: освоить методику создания приложений, в которых используются динамические структуры данных.
Задание: Создать приложение, которое осуществляет ввод k значений элементов одномерного массива с клавиатуры, меняет местами элементы с минимальным и максимальным значениями и выводит полученный массив.
Листинг програмыы:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Spin,
Grids, ExtCtrls, Buttons;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
SpinEdit1: TSpinEdit;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
mas = array[1..1] of integer;
var
Form1: TForm1;
n, max, min:integer;
pMas:^mas;
implementation
{ TForm1 }
procedure Tablichka();
var i:integer;
begin
for i:=1 to n do
Form1.StringGrid1.Cells[0,i]:=IntToStr(pmas^[i]);
end;
procedure TForm1.Button1Click(Sender: TObject);
label ex;
var i,j,a:integer;
begin
if n=0 then goto ex;
Randomize;
for i:=1 to n do
begin
a:=random(10);
pmas^[i]:=a;
end;
max:=pmas^[1];
min:=pmas^[1];
for i:=2 to n do begin
if pmas^[i]>max then max:=pmas^[i];
if pmas^[i]<min then min:=pmas^[i]
end;
LabeledEdit1.Text:=IntToStr(min);
LabeledEdit2.Text:=IntToStr(max);
Tablichka;
ex:
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for i:=1 to n do begin
if pmas^[i]=max then pmas^[i]:=min else
if pmas^[i]=min then pmas^[i]:=max;
end;
Tablichka;
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
FreeMem(pMas, SizeOf(integer)*n);
n := SpinEdit1.Value;
StringGrid1.RowCount:=n+1;
GetMem(pMas, SizeOf(integer)*n);
end;
initialization
{$I unit1.lrs}
end.