Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Приложения А

Читайте также:
  1. Автоматизация компиляции приложения в операционной системе FreeBSD и Linux
  2. Б.Г.Ананьев. Педагогические приложения современной психологии//Хрестоматия по возрастной и педагогической психологии. Под ред. И.И.Ильясова, В.Я.Ляудис. – М. МГУ, 1981, с.13.
  3. В приложения включают рисунки, таблицы, графики и другой информационный материал, который нецелесообразно приводить по тексту работы.
  4. Взаимодействие платформы .Net Framework с ОС и приложениями пользователя
  5. Возможные точки приложения повреждающего действия токсикантов на процессы синтеза белка и клеточного деления
  6. Вопрос44. Экономические приложения интегралов.
  7. Г) Приложения.
  8. Геометрические приложения определенного интеграла
  9. Жизненный цикл приложения
  10. Из приложения 2

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

img1: TImage;

lst1: TListBox;

point_x: TEdit;

lbl1: TLabel;

point_y: TEdit;

lbl2: TLabel;

add: TButton;

btn1: TButton;

n_gen: TEdit;

gen: TButton;

lbl3: TLabel;

procedure addClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure genClick(Sender: TObject);

procedure btn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

type

tmypoint = record

x: Integer;

y: Integer;

end;

 

var

points: array [0..100000] of tmypoint;

cnt: Integer;

// проверка, является ли s числом

function is_digit(s: string):Boolean;

var i: integer;

f: boolean;

begin

f:= true;

if s = '' then f:= false;

for i:= 1 to length(s) do

if (Ord(s[i]) < Ord('0')) or (Ord(s[i]) > Ord('9'))

then

f:= false;

Result:= f;

end;

// рисует список точек

procedure update_list();

var i: integer;

canvas: tcanvas;

begin

Form1.lst1.Clear;

canvas:= Form1.img1.Canvas;

canvas.Brush.Color:=clWhite;

canvas.Rectangle(0, 0, Form1.img1.Width, Form1.img1.Height);

canvas.Brush.Color:=clBlack;

for i:= 0 to cnt-1 do

begin

Form1.lst1.Items.add(IntToStr(points[i].x)+ ', '+IntToStr(points[i].y));

canvas.Ellipse(points[i].x-2, Form1.img1.Height - points[i].y-2, points[i].x+2, Form1.img1.Height - points[i].y+2);

end;

end;

 

 

// добавляет точки в список

procedure add_point_int(x, y: integer);

begin

if (x > form1.img1.Width) or (y > Form1.img1.Height) or (x < 0) or (y < 0)

then

begin

ShowMessage('Неподходящие координаты');

Exit;

end;

points[cnt].x:= x;

points[cnt].y:= y;

Inc(cnt);

end;

 

// добавляет точки в список

procedure add_point_str(_x, _y: string);

var

x, y: Integer;

begin

if not is_digit(_x) or not is_digit(_y)

then

begin

ShowMessage('Неподходящие координаты');

Exit;

end;

x:= StrToInt(_x);

y:= StrToInt(_y);

add_point_int(x, y);

end;

 

procedure TForm1.addClick(Sender: TObject);

var

x, y: Integer;

begin

add_point_str(point_x.Text, point_y.text);

update_list;

end;

 

procedure TForm1.FormShow(Sender: TObject);

begin

cnt:= 0;

update_list;

end;

 

 

procedure TForm1.genClick(Sender: TObject);

var

i: Integer;

begin

Randomize;

if not is_digit(n_gen.Text)

then

begin

ShowMessage('Неподходящие координаты');

Exit;

end;

for i:= 1 to StrToInt(n_gen.Text) do

add_point_int(Random(img1.Width), Random(img1.Height));

update_list;

end;

 

function distance(p1, p2: tmypoint): Double;

begin

Result:= (Sqrt(Sqr(p2.x - p1.x) + Sqr(p2.y - p1.y)));

end;

 

function is_bar(p1, p2, p3, p4: tmypoint): Boolean;

var d1, d2, d3, d4: double;

begin

d1:= distance(p1, p2);

d2:= distance(p2, p3);

d3:= distance(p3, p4);

d4:= distance(p4, p1);

Result:= (d1 = d2) and (d2 = d3) and (d3 = d4) and (d4 = d1) and (d1 <> 0);

end;

 

procedure drawbar(p1, p2, p3, p4: tmypoint);

begin

Form1.img1.Canvas.MoveTo(p1.x, Form1.img1.Height - p1.y);

Form1.img1.Canvas.LineTo(p2.x, Form1.img1.Height - p2.y);

Form1.img1.Canvas.LineTo(p3.x, Form1.img1.Height - p3.y);

Form1.img1.Canvas.LineTo(p4.x, Form1.img1.Height - p4.y);

Form1.img1.Canvas.LineTo(p1.x, Form1.img1.Height - p1.y);

end;

 

procedure gen_bars();

var

i1, i2, i3, i4, acnt: Integer;

begin

acnt:= 0;

for i1:= 0 to cnt-1 do

for i2:= i1+1 to cnt-1 do

for i3:= i2+1 to cnt-1 do

for i4:= i3+1 to cnt-1 do

if is_bar(points[i1], points[i2], points[i3], points[i4])

then

begin

drawbar(points[i1], points[i2], points[i3], points[i4]);

inc(acnt);

end;

ShowMessage(IntToStr(acnt)+' квадратов найдено');

end;

 

procedure TForm1.btn1Click(Sender: TObject);

begin

gen_bars();

end;

 

end.




Дата добавления: 2015-01-29; просмотров: 18 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав