Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
17.04.2013
Размер:
6.36 Кб
Скачать
//---------------------------------------------------------------------------
#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;}
     }

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

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