Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабораторная работа / лабораторные работы по LAZARUS / Отчет спо лазарус лаба автомат

.docx
Скачиваний:
60
Добавлен:
11.02.2014
Размер:
25.08 Кб
Скачать

Программирование алгоритмов с использованием динамических структур данных

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

Задание: Создать приложение, которое осуществляет ввод 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.