Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Запись.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
133.12 Кб
Скачать

Лабораторная работа 5.

Лабораторная работа посвящена работе со структурой данных – запись (RECORD).

Запись представляет собой структуру данных, объединяющую под одним общим именем данные различных типов. Отдельные данные записи называются полями. Существуют простые записи и записи с вариативной частью.

Постановка задачи.

Написать приложение, реализующее различные задачи с использованием структуры - запись.

Используемые компоненты:

Form, Label, Edit, Button, Image, StringGrid.

Каждый вариант должен быть оформлен как отдельный проект, с произвольным интерфейсом.

Примеры и задания для самостоятельной работы.

Вариант 1.

Точка на плоскости.

Как известно точка на плоскости характеризуется двумя координатами. Т.е. есть величина «точка», хранимая в памяти как самостоятельная величина. Данные о точке включают в себя поля координат X и Y. Таким образом, для представления точки следует воспользоваться структурой запись, следующего вида:

Type

TPoint = record

x,y:real;

end;

Задания:

Используя данное определение точки реализовать следующие функции:

- отображение окружности с центром в точке, заданной пользователем;

- вычисление длины отрезка, заданного координатами двух точек;

- определить, является ли фигура заданная 3 точками, треугольником;

- построение замкнутой ломанной по заданным точкам, указывая их координаты на рисунке.

Примерный вид интерфейса и некоторые решения поставленных задач:

implementation

{$R *.dfm}

type TPoint = record

x,y:real;

end;

var Center:TPoint; //центр рабочей области для рисования

PointArray: array of TPoint; //массив точек ломанной

procedure TForm1.FormCreate(Sender: TObject);

begin

Center.x := Image1.Width / 2;

Center.y := Image1.Height / 2;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

//Строим оси координат. Остальные объекты будем смещать относительно этих осей

//производим округления, т.к. координаты на экране мониторы двобными быть не могут

Image1.Canvas.MoveTo(round(Center.x), 0);

Image1.Canvas.LineTo(round(Center.x), Image1.Height);

Image1.Canvas.MoveTo(0, round(Center.y));

Image1.Canvas.LineTo(Image1.Width, round(Center.y));

end;

Отображение окружности с центром в заданной точке

procedure TForm1.Button1Click(Sender: TObject);

var CircleCenter:TPoint;

begin

CircleCenter.x := StrToFloat(Edit1.Text);

CircleCenter.y := StrToFloat(Edit2.Text);

//окр вписывается в квадрат с центром смещенным относительно осей координат

Image1.Canvas.Ellipse(round(CircleCenter.x)-5+round(Center.x),

round(CircleCenter.y)-5+round(Center.y),

round(CircleCenter.x)+5+round(Center.x),

round(CircleCenter.y)+5+round(Center.y));

end;

procedure TForm1.Button1Click(Sender: TObject);

var CircleCenter:TPoint;

begin

CircleCenter.x := StrToFloat(Edit1.Text);

CircleCenter.y := StrToFloat(Edit2.Text);

Заполнение массива координатами точек для построения ломанной

procedure TForm1.Button2Click(Sender: TObject);

var NextPoint:TPoint; //текущая точка звена ломанной

begin

SetLength(PointArray, Length(PointArray) + 1);

NextPoint.x := StrToFloat(Edit1.Text);

NextPoint.y := StrToFloat(Edit2.Text);

PointArray[High(PointArray)] := NextPoint;

//очистить поля ввода

Edit1.Text := '';

Edit2.Text := '';

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]