Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
laby.doc
Скачиваний:
2
Добавлен:
26.11.2018
Размер:
598.53 Кб
Скачать
    1. Визуальное программирование Постановка задачи

Выполнить задание лабораторной работы №3 с использованием средств визуального программирования, т.е. расчет площадей прямоугольника, треугольника и круга с проверкой корректности ввода данных и возможности вычислений. Для выбора типа фигуры использовать управляющий элемент «Группа переключателей» (класс TRadioGroup) с тремя вариантами выбора, для задания параметров каждой фигуры использовать поля ввода (класс TEdit), текстовые надписи выполнить с помощью меток (класс TLabel). Необходимо реализовать две кнопки (класс TButton): «Рассчитать площадь» и «Выход», выполняющие соответствующие действия.

Также на форме должен присутствовать элемент «Изображение» (класс TImage) для отображения вида фигур. При расчете площади в этом элементе должно выводиться изображение соответствующей фигуры в соответствии с введенными параметрами.

Математическая модель

, где p – полупериметр, .

Для отображения на экране необходимо задать координаты основных точек фигур:

Координаты углов прямоугольника для процедуры Rectangle

Координаты углов описывающего эллипс прямоугольника для процедуры Ellipse

Координаты точек для процедур MoveTo и LineTo

,

Основная форма программы

Основные свойства формы

Name = 'MainForm'

Caption = 'Лабораторная работа №6'

Элементы формы

Группа переключателей:

Figure: TRadioGroup

Caption = ‘Фигура’

Items = ('Прямоугольник', 'Треугольник', 'Круг')

Метки:

Label1: TLabel

Caption = 'Параметры фигуры'

Label2: TLabel

Caption = 'a'

Label3: TLabel

Caption = 'b'

Поля ввода:

ra: TEdit

rb: TEdit

ta: TEdit

tb: TEdit

tc: TEdit

cr: TEdit

Кнопки:

Button1: TButton

Caption = ‘Рассчитать площадь’

OnClick = Button1Click

Button2: TButton

Caption = ‘Выход’

OnClick = Button2Click

Изображение:

Image: TImage

Transparent = True

Текст программы

unit Main;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type

TMainForm = class(TForm)

Figure: TRadioGroup;

ra: TEdit;

rb: TEdit;

ta: TEdit;

tb: TEdit;

tc: TEdit;

cr: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Button1: TButton;

Button2: TButton;

Image: TImage;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.Button1Click(Sender: TObject);

var

a,b,c,r,p,s,h:Real;

begin

with Image.Picture.Bitmap do

begin

Width:=0; { Для очистки изображения }

Height:=0;

Width:=Image.Width;

Height:=Image.Width;

end;

case Figure.ItemIndex of

0:begin

a:=StrToFloat(ra.Text);

b:=StrToFloat(rb.Text);

if (a<=0) or (b<=0) then

ShowMessage('Некорректный ввод')

else

begin

ShowMessage('Площадь прямоугольника равна '+

FloatToStr(a*b));

with Image.Picture.Bitmap.Canvas do

Rectangle(0,0,Round(a),Round(b));

end;

end;

1:begin

a:=StrToFloat(ta.Text);

b:=StrToFloat(tb.Text);

c:=StrToFloat(tc.Text);

if (a<=0) or (b<=0) or (c<=0) then

ShowMessage('Некорректный ввод')

else

if (a+b<=c) or (b+c<=a) or (a+c<=b) then

ShowMessage('Треугольник не существует')

else

begin

p:=(a+b+c)/2;

s:=Sqrt(p*(p-a)*(p-b)*(p-c));

ShowMessage('Площадь треугольника равна '+

FloatToStr(s));

with Image.Picture.Bitmap.Canvas do

begin

MoveTo(0,0);

LineTo(Round(a),0);

h:=2*s/a;

LineTo(Round(Sqrt(Sqr(c)-Sqr(h))),

Round(h));

LineTo(0,0);

end;

end;

end;

2:begin

r:=StrToFloat(cr.Text);

if r<=0 then

ShowMessage('Некорректный ввод')

else

begin

ShowMessage('Площадь круга равна '+

FloatToStr(Pi*Sqr(r)));

with Image.Picture.Bitmap.Canvas do

Ellipse(0,0,Round(2*r),Round(2*r));

end;

end;

end;

end;

procedure TMainForm.Button2Click(Sender: TObject);

begin

Close;

end;

end.

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