Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы / сочетания / Unit1
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
struct Tochka
{
int x0;
int y0;
};
int xx, yy;
int x[100], y[100];
int n=0;
int p[4];
int w=0;
int r[4];
void PaintX (Tochka t1, Tochka t2)
{
Form1->Image1->Canvas->MoveTo(t1.x0,t1.y0);
Form1->Image1->Canvas->LineTo(t2.x0,t2.y0);
}
Tochka t[100];
bool GenSoch(int p[], int n)
{
int j, d, k; bool result;
for(j=1;j<4;j++)
{
d = p[4-j] + j;
result = d>n;
if (result==false)
{
for (k=1;k<j+1;k++)
p[4-k] = d - k + 1;
exit;
}
}
return result;
}
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
xx=X;
yy=Y;
}
void __fastcall TForm1::Image1Click(TObject *Sender)
{
n++;
int nn = n;
Form1->Image1->Canvas->Ellipse(xx-8,yy-8,xx+8,yy+8);
Form1->Image1->Canvas->TextOutA(xx-3,yy-7,IntToStr(nn));
x[nn]=xx;
y[nn]=yy;
t[nn].x0 = x[nn];
t[nn].y0 = y[nn];
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text = "";
if (w!=0)
{
Form1->Image1->Canvas->Pen->Color=0xffffff;
PaintX(t[r[1]],t[r[2]]);
PaintX(t[r[1]],t[r[3]]);
PaintX(t[r[2]],t[r[3]]);
Form1->Image1->Canvas->Pen->Color=0x000000;
Form1->Image1->Canvas->Ellipse(t[r[1]].x0-8,t[r[1]].y0-8,t[r[1]].x0+8,t[r[1]].y0+8);
Form1->Image1->Canvas->TextOutA(t[r[1]].x0-3,t[r[1]].y0-7,IntToStr(r[1]));
Form1->Image1->Canvas->Ellipse(t[r[2]].x0-8,t[r[2]].y0-8,t[r[2]].x0+8,t[r[2]].y0+8);
Form1->Image1->Canvas->TextOutA(t[r[2]].x0-3,t[r[2]].y0-7,IntToStr(r[2]));
Form1->Image1->Canvas->Ellipse(t[r[3]].x0-8,t[r[3]].y0-8,t[r[3]].x0+8,t[r[3]].y0+8);
Form1->Image1->Canvas->TextOutA(t[r[3]].x0-3,t[r[3]].y0-7,IntToStr(r[3]));
}
int mas[100];
int i, j, k;
float s, MaxS;
MaxS = 0;
for (j=1;j<4;j++)
{p[j] = j;
r[j] = p[j]; }
do
{
i = p[1];
j = p[2];
k = p[3];
s = abs((x[j] - x[i])*(y[k] - y[i]) - (y[j] - y[i])*(x[k] - x[i]))/2;
if (s>MaxS)
{MaxS = s;
for (j=1;j<4;j++)
r[j] = p[j];
}
}
while (GenSoch(p,n)==false);
w++;
Edit1->Text = FloatToStr(MaxS);
Form1->Image1->Canvas->Pen->Color=0x0000aa;
PaintX(t[r[1]],t[r[2]]);
PaintX(t[r[1]],t[r[3]]);
PaintX(t[r[2]],t[r[3]]);
Form1->Image1->Canvas->Pen->Color=0x000000;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Image1->Canvas->Rectangle(0,0,Form1->Image1->Width,Form1->Image1->Height);
n=0;
w=0;
Edit1->Text = "";
}
//---------------------------------------------------------------------------
Соседние файлы в папке сочетания