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

Лабы / С++Builder / Laba4 / Unit1

.cpp
Скачиваний:
12
Добавлен:
17.04.2013
Размер:
7.96 Кб
Скачать
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Compl.h"
#include <Math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
Compl *cplx[10];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
for (int i=0;i<10;i++) cplx[i]=NULL;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
for (int i=0;i<10;i++) if (!cplx[i]) {cplx[i]= new Compl(StrToFloat(Edit1->Text),StrToFloat(Edit2->Text)/180.*pi, Image1);break;}
for (int i=0;i<10;i++)
        {
        if (cplx[i])
                {
                EPoint k=cplx[i]->GetXY();
                Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=("+IntToStr(int(k.x))+","+IntToStr(int(k.y))+")                  ");
                }
        else Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=NULL             ");
        }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if ((Key<'0' || Key>'9') && Key!=8) Key=0;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
EPoint a,b;
a.x=b.x=0;
b.x=StrToInt(Edit3->Text);
b.y=StrToInt(Edit4->Text);
for (int i=0;i<10;i++) if (!cplx[i]) {cplx[i]= new Compl(a,b, Image1);break;}
for (int i=0;i<10;i++)
        {
        if (cplx[i])
                {
                EPoint k=cplx[i]->GetXY();
                Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=("+IntToStr(int(k.x))+","+IntToStr(int(k.y))+")                  ");
                }
        else Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=NULL             ");
        }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
for (int i=0;i<10;i++) if (cplx[i])
        {
        if (cplx[i]->IsSelected()) {delete cplx[i]; cplx[i]=NULL;}
        }
for (int i=0;i<10;i++)
        {
        if (cplx[i])
                {
                EPoint k=cplx[i]->GetXY();
                Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=("+IntToStr(int(k.x))+","+IntToStr(int(k.y))+")                  ");
                }
        else Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=NULL");
        }
}
//---------------------------------------------------------------------------




void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
int x=+X-Image1->Width/2;
int y=-(Y-Image1->Height/2);
if (!(x || y)) return;
EPoint pp;
for (int i=0;i<10;i++) if (cplx[i])
        {
        pp=cplx[i]->GetXY();
        if (sqrt(pp.x*pp.x+pp.y*pp.y)>=sqrt(x*x+y*y) && pp.x*x>=0 &&pp.y*y>=0)
                {
                if (abs(pp.y*x-pp.x*y)/sqrt(pp.x*pp.x+pp.y*pp.y)<2)
                        {
                        cplx[i]->Mark(true);
                        break;
                        }
                }
        }
//Image1->Canvas->
for (int i=0;i<10;i++) if (cplx[i])
        {
        cplx[i]->ReDraw();
        }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
int a=StrToInt(Edit5->Text);
int b=StrToInt(Edit6->Text);
int c=StrToInt(Edit7->Text);
if (!(cplx[a] && cplx[b])) return;
if (cplx[c]) {cplx[c]->ReDraw(false); *cplx[c]=*cplx[a]+*cplx[b];} else {cplx[c]=new Compl(0,0,Image1); *cplx[c]=*cplx[a]+*cplx[b];}
for (int i=0;i<10;i++)
        {
        if (cplx[i])
                {
                EPoint k=cplx[i]->GetXY();
                Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=("+IntToStr(int(k.x))+","+IntToStr(int(k.y))+")                  ");
                cplx[i]->ReDraw();
                }
        else Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=NULL             ");
        }

}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
int a=StrToInt(Edit8->Text);
int b=StrToInt(Edit9->Text);
int c=StrToInt(Edit10->Text);
if (!(cplx[a] && cplx[b])) return;
if (cplx[c]) {cplx[c]->ReDraw(false);*cplx[c]=*cplx[a]-*cplx[b];} else {cplx[c]=new Compl(0,0,Image1); *cplx[c]=*cplx[a]-*cplx[b];}
for (int i=0;i<10;i++)
        {
        if (cplx[i])
                {
                EPoint k=cplx[i]->GetXY();
                Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=("+IntToStr(int(k.x))+","+IntToStr(int(k.y))+")                  ");
                cplx[i]->ReDraw();
                }
        else Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=NULL             ");
        }
        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
int a=StrToInt(Edit11->Text);
int b=StrToInt(Edit12->Text);
int c=StrToInt(Edit13->Text);
if (!(cplx[a] && cplx[b])) return;
if (cplx[c]) {cplx[c]->ReDraw(false);*cplx[c]=*cplx[a]**cplx[b];} else {cplx[c]=new Compl(0,0,Image1); *cplx[c]=*cplx[a]**cplx[b];}
for (int i=0;i<10;i++)
        {
        if (cplx[i])
                {
                EPoint k=cplx[i]->GetXY();
                Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=("+IntToStr(int(k.x))+","+IntToStr(int(k.y))+")                  ");
                cplx[i]->ReDraw();
                }
        else Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=NULL             ");
        }
        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton4Click(TObject *Sender)
{
int a=StrToInt(Edit14->Text);
int b=StrToInt(Edit15->Text);
int c=StrToInt(Edit16->Text);
if (!(cplx[a] && cplx[b])) return;
if (cplx[c]) {cplx[c]->ReDraw(false);*cplx[c]=*cplx[a]/ *cplx[b];} else {cplx[c]=new Compl(0,0,Image1); *cplx[c]=*cplx[a]/ *cplx[b];}
for (int i=0;i<10;i++)
        {
        if (cplx[i])
                {
                EPoint k=cplx[i]->GetXY();
                Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=("+IntToStr(int(k.x))+","+IntToStr(int(k.y))+")                  ");
                cplx[i]->ReDraw();
                }
        else Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=NULL             ");
        }

}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button4Click(TObject *Sender)
{
cplx[StrToInt(Edit17->Text)]->rotate(StrToInt(Edit18->Text)*pi/180);
for (int i=0;i<10;i++)
        {
        if (cplx[i])
                {
                EPoint k=cplx[i]->GetXY();
                Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=("+IntToStr(int(k.x))+","+IntToStr(int(k.y))+")                  ");
                cplx[i]->ReDraw();
                }
        else Image1->Canvas->TextOutA(0,13*i,"cplx["+IntToStr(i)+"]=NULL             ");
        }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton5Click(TObject *Sender)
{
EPoint p1,p2;
p1=cplx[StrToInt(Edit19->Text)]->GetXY();
p2=cplx[StrToInt(Edit20->Text)]->GetXY();

Edit21->Text=FloatToStr(1/100.*int(100*(p1.x*p2.x+p1.y*p2.y)/sqrt(p1.x*p1.x+p1.y*p1.y)/sqrt(p2.x*p2.x+p2.y*p2.y)));

}
//---------------------------------------------------------------------------

Соседние файлы в папке Laba4