Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / ООП.Builder / Лабы / complex laba4 / Unit1
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <math.h>
#include <Math.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
int m=20;
int choise;
int d=1,xm,ym;
TForm1 *Form1;
//-------------------------------------------------------
void TForm1::OSI() //ОСИ
{ Image1->Canvas->Pen->Width=2;
Image1->Canvas->Pen->Color=clBlack;
Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->FillRect(Rect(0, 0, Image1->Width, Image1->Height));
Image1->Canvas->MoveTo(5,Image1->Height/2);
Image1->Canvas->LineTo(Image1->Width-5,Image1->Height/2);
Image1->Canvas->MoveTo(Image1->Width/2,5);
Image1->Canvas->LineTo(Image1->Width/2,Image1->Height-5);
for(int i=20;i<380;i+=m)
{ Image1->Canvas->Pen->Width=1;
Image1->Canvas->MoveTo(i,Image1->Height/2-2);
Image1->Canvas->LineTo(i,Image1->Height/2+2);
}
for(int i=20;i<360;i+=m)
{ Image1->Canvas->Pen->Width=1;
Image1->Canvas->MoveTo(Image1->Width/2-2,i);
Image1->Canvas->LineTo(Image1->Width/2+2,i);
}
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{ for (int i=0;i<10;i++)
compl[i]=NULL;
OSI();
}
//-------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy()
{ for (int i=0;i<10;i++) {compl[i]=NULL;delete compl[i];}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{ for (int i=0; i<10; i++)
{if (compl[i] == NULL)
{compl[i]=new Complex(StrToInt(Edit1->Text),StrToInt(Edit2->Text),0,0,i,Image1);
compl[i]->Draw(m);
compl[i]->Zapis(10,10+d*15,i);
break; } }
d++;
}
//очистка---------------------------------------------------------------------
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{ for (int i=0; i<10; i++)
{ compl[i]=NULL;
delete compl[i]; }
d=1;
OSI();
Edit1->Text=' ';
Edit2->Text=' ';
Edit3->Text=' ';
Edit4->Text=' ';
Edit5->Text=' ';
Edit6->Text=' ';
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton9Click(TObject *Sender)
{ Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{ Panel1->Caption='+'; choise=1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton4Click(TObject *Sender)
{ Panel1->Caption='-'; choise=2;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton8Click(TObject *Sender)
{ Panel1->Caption='*'; choise=3;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton7Click(TObject *Sender)
{ Panel1->Caption='/'; choise=4;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton6Click(TObject *Sender)
{ for (int i=0; i<10; i++)
{if (compl[i] == NULL)
{ Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->FillRect(Rect(10,10+15*(d-1),10,10+15*(d+1)));
compl[i-1]->ReDraw(m);
Image1->Canvas->Font->Color=clWhite;
compl[i-1]->Zapis(10,10+15*(d-1),i-1);
compl[i-1]=NULL;
delete compl[i-1] ;
break; }}
if(d>0) d--;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton5Click(TObject *Sender)
{ int num3=StrToFloat(Edit4->Text)-1;
for (int j=0;j<10;j++)
{if ( compl[j]->num ==num3)
{ for(int k=0;k<10;k++)
if(compl[k]==NULL)
{ compl[k]=new Complex(0,0,0,0,0,Image1);
Res=new Complex(0,0,0,0,0,Image1);
Res=compl[j];
Res->Rotate(StrToFloat(Edit3->Text));
compl[k]=Res;
compl[j]->num=j;
compl[k]->num=k;
compl[k]->Draw(m);
compl[k]->Zapis(10,10+15*d,k);
Res=NULL;
delete Res;
d++;break;
};break;
};break;
};
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton10Click(TObject *Sender)
{int num1=StrToFloat(Edit4->Text)-1;
int num2=StrToFloat(Edit5->Text)-1;
for (int i=0;i<10;i++)
{if ( compl[i]->num ==num1)
for (int j=0;j<10;j++)
{if ( compl[j]->num ==num2)
{ for(int k=0;k<10;k++)
if(compl[k]==NULL)
{
compl[k]=new Complex(0,0,0,0,0,Image1);
Edit4->Text=" ("+FloatToStr(compl[i]->Re)+";"+FloatToStr(compl[i]->Im)+")";
Edit5->Text=" ("+FloatToStr(compl[j]->Re)+";"+FloatToStr(compl[j]->Im)+")";
switch (choise)
{
case 1 : *compl[k]=*compl[i]+*compl[j];break;
case 2 : *compl[k]=*compl[i]-*compl[j];break;
case 3 : *compl[k]=(*compl[i])*(*compl[j]);break;
case 4 : *compl[k]=(*compl[i])/(*compl[j]);break;
}
Edit6->Text=" ("+FloatToStr(compl[k]->Re)+";"+FloatToStr(compl[k]->Im)+")";
compl[k]->Draw(m);
compl[k]->Zapis(10,10+15*d,k);d++;
compl[k]->num=k;
return;
}
}
}
}
}
//==============================================================================
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{ for (int i=0;i<10;i++)
{
int X1=X-Image1->Width/2;
int Y1=Image1->Height/2-Y;
int xc=(*compl[i]).Re*m;
int yc=(*compl[i]).Im*m;
if ((( sqrt(pow(X1,2)+pow(Y1,2))+sqrt(pow(xc-X1,2)+pow(yc-Y1,2)) ) - (sqrt(pow(xc,2)+pow(yc,2)) ))<5)
{Edit4->Text=(*compl[i]).num+1;
break;}
}
}
//---------------------------------------------------------------------------