
Добавил:
masterdos
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Т.С.П.П / Махинации с ТСПП / Махинации с ТСПП / ТСПП / 2 Л.р / 2 / Unit1
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "math.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Memo1->Clear(); Memo2->Clear();
Edit1->Hide();Label1->Hide();Edit1->Clear();
Edit2->Hide();Label2->Hide();Edit2->Clear();
Edit3->Hide();Label3->Hide();Edit3->Clear();
Edit4->Hide();Label4->Hide();Edit4->Clear();
Edit5->Hide();Label8->Hide();Edit5->Clear();
Edit6->Hide();Edit6->Clear();
Edit7->Hide();Edit7->Clear();
Edit8->Hide();Edit8->Clear();
Edit9->Hide();Edit9->Clear();
Memo1->Lines->Add("Вибіріть задачу для виводу необхідних змінних на екран.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int a, b, c, d, da, db, dc, a1x, a1y, a2x, a2y, a3x, a3y, a4x, a4y;
double storonaA, storonaB, storonaC, pivP, ploshaT, zmA, zmB, zmC;
Memo2->Clear();
switch(RadioGroup1->ItemIndex)
{
case 0:
{
try
{
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
c=StrToFloat(Edit3->Text);
d=StrToFloat(Edit4->Text);
}
catch (EConvertError &e)
{
ShowMessage("Помилка. Змінні мають бути цілим числом.");
return;
}
if(a==d) Memo2->Lines->Add("Число А рівне числу D.\n");
if(b==d) Memo2->Lines->Add("Число B рівне числу D.\n");
if(c==d) Memo2->Lines->Add("Число C рівне числу D.\n");
if((a!=d)&&(b!=d)&&(c!=d))
{
da=d-a;
db=d-b;
dc=d-c;
Memo2->Lines->Add("Жодне з чисел не рівне D.\nMax("+FloatToStrF(da,ffFixed,8,0)+","+FloatToStrF(db,ffFixed,8,0)+","+FloatToStrF(dc,ffFixed,8,0)+").");
}
}break;
case 1:
{
Memo2->Clear();
try
{
a1x=StrToFloat(Edit1->Text);
a2x=StrToFloat(Edit2->Text);
a3x=StrToFloat(Edit3->Text);
a4x=StrToFloat(Edit5->Text);
a1y=StrToFloat(Edit6->Text);
a2y=StrToFloat(Edit7->Text);
a3y=StrToFloat(Edit8->Text);
a4y=StrToFloat(Edit9->Text);
}
catch (EConvertError &e)
{
ShowMessage("Помилка. Координати мають бути цілим числом.");
return;
}
if((a1x==a2x==a3x==a4x)&&(a1y==a2y==a3y==a4y)) Memo2->Lines->Add("Це одна точка");
else
if((a1y==a4y)&&(a2y==a3y)&&(abs(a1x-a2x)==abs(a3x-a4x))) Memo2->Lines->Add("Точки э вершинами паралелограма.");
else
Memo2->Lines->Add("Точки не э вершинами паралелограма.");
}break;
case 2:
{
Memo2->Clear();
try
{
a1x=StrToFloat(Edit1->Text);
a2x=StrToFloat(Edit2->Text);
a3x=StrToFloat(Edit3->Text);
a1y=StrToFloat(Edit6->Text);
a2y=StrToFloat(Edit7->Text);
a3y=StrToFloat(Edit8->Text);
}
catch (EConvertError &e)
{
ShowMessage("Помилка. Координати мають бути цілим числом.");
return;
}
if((a1x==a2x==a3x)&&(a1y==a2y==a3y)) Memo2->Lines->Add("Це одна точка");
else
if((a1x==a2x)&&(a2x==a3x)) Memo2->Lines->Add("Точки знаходяться на одній прямій");
else
if((a1y==a2y)&&(a2y==a3y)) Memo2->Lines->Add("Точки знаходяться на одній прямій");
else
{
storonaA=sqrt((a1x-a2x)*(a1x-a2x)+(a1y-a2y)*(a1y-a2y));
storonaB=sqrt((a2x-a3x)*(a2x-a3x)+(a2y-a3y)*(a2y-a3y));
storonaC=sqrt((a3x-a1x)*(a3x-a1x)+(a3y-a1y)*(a3y-a1y));
pivP=(storonaA+storonaB+storonaC)/2;
ploshaT=sqrt(pivP*(pivP-storonaA)*(pivP-storonaB)*(pivP-storonaC));
Memo2->Lines->Add("Точки не знаходяться на одній прямій. Отже площа трикутника рівна "+FloatToStrF(ploshaT,ffFixed,8,2));
}
}break;
case 3:
{
Memo2->Clear();
try
{
zmA=StrToFloat(Edit1->Text);
zmB=StrToFloat(Edit2->Text);
zmC=StrToFloat(Edit3->Text);
}
catch (EConvertError &e)
{
ShowMessage("Помилка. Змінні мають бути дійсним або цілим числом.");
return;
}
if((zmA>=zmB)&&(zmB>=zmC)) {zmA=2*zmA; zmB=2*zmB; zmC=2*zmC; Memo2->Lines->Add("Задовільняеться умова:а >= b >= c. Отже А="+FloatToStrF(zmA,ffFixed,8,2)+" B="+FloatToStrF(zmB,ffFixed,8,2)+" C="+FloatToStrF(zmC,ffFixed,8,2));}
else
{
zmA=abs(zmA); zmB=abs(zmB); zmC=abs(zmC); Memo2->Lines->Add("Не задовільняеться умова:а >= b >= c. Отже А="+FloatToStrF(zmA,ffFixed,8,2)+" B="+FloatToStrF(zmB,ffFixed,8,2)+" C="+FloatToStrF(zmC,ffFixed,8,2));}
}break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{
switch(RadioGroup1->ItemIndex)
{
case 0:
{
Edit1->Show();Label1->Show();Edit1->Clear();
Edit2->Show();Label2->Show();Edit2->Clear();
Edit3->Show();Label3->Show();Edit3->Clear();
Edit4->Show();Label4->Show();Edit4->Clear();
Edit5->Hide();Label8->Hide();Edit5->Clear();
Edit6->Hide();Edit6->Clear();
Edit7->Hide();Edit7->Clear();
Edit8->Hide();Edit8->Clear();
Edit9->Hide();Edit9->Clear();
Memo1->Clear(); Memo2->Clear();
Label1->Caption="A=";
Label2->Caption="B=";
Label3->Caption="C=";
Label7->Caption="Змінні:";
Memo1->Lines->Add("Дано три числа а, b, с. Визначити, яке з них рівне d. Якщо жодне не рівне d, то знайти max(d - а, d -b, d -с).");
}break;
case 1:
{
Edit1->Show();Label1->Show();Edit1->Clear();
Edit2->Show();Label2->Show();Edit2->Clear();
Edit3->Show();Label3->Show();Edit3->Clear();
Edit4->Hide();Label4->Hide();Edit4->Clear();
Edit6->Show();Edit6->Clear();
Edit7->Show();Edit7->Clear();
Edit8->Show();Edit8->Clear();
Edit9->Show();Edit9->Clear();
Memo1->Clear(); Memo2->Clear();
Label8->Show(); Edit5->Show(); Edit5->Clear();
Label1->Caption="A1=";
Label2->Caption="A2=";
Label3->Caption="A3=";
Label7->Caption="Координати Х та Y:";
Memo1->Lines->Add("Дано чотири точки А1(х1, у1), А2(x2,у2), А3(x3, у3), А4(х4, у4). Визначити, чи будуть вони вершинами паралелограма.");
}break;
case 2:
{
Edit1->Show();Label1->Show();Edit1->Clear();
Edit2->Show();Label2->Show();Edit2->Clear();
Edit3->Show();Label3->Show();Edit3->Clear();
Edit4->Hide();Label4->Hide();Edit4->Clear();
Edit6->Show();Edit6->Clear();
Edit7->Show();Edit7->Clear();
Edit8->Show();Edit8->Clear();
Edit9->Hide();Edit9->Clear();
Memo1->Clear(); Memo2->Clear();
Label8->Hide(); Edit5->Hide(); Edit5->Clear();
Label1->Caption="A=";
Label2->Caption="B=";
Label3->Caption="C=";
Label7->Caption="Координати Х та Y:";
Memo1->Lines->Add("Дано три крапки А1(х1, у1), B(х2, у2), і C(х3, у3). Визначити, чи будуть вони розташовані на одній прямій. Якщо ні, то обчислити площу ABC.");
}break;
case 3:
{
Edit1->Show();Label1->Show();Edit1->Clear();
Edit2->Show();Label2->Show();Edit2->Clear();
Edit3->Show();Label3->Show();Edit3->Clear();
Edit4->Hide();Label4->Hide();Edit4->Clear();
Edit6->Hide();Edit6->Clear();
Edit7->Hide();Edit7->Clear();
Edit8->Hide();Edit8->Clear();
Edit9->Hide();Edit9->Clear();
Memo1->Clear(); Memo2->Clear();
Label8->Hide(); Edit5->Hide(); Edit5->Clear();
Label1->Caption="A=";
Label2->Caption="B=";
Label3->Caption="C=";
Label7->Caption="Дійсні числа:";
Memo1->Lines->Add("Дані дійсні числа а, b, с. Подвоїти ці числа, якщо а >= b >= c, і замінити їх абсолютними значеннями, якщо це не так.");
}break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit1->Clear();
Edit2->Clear();
Edit3->Clear();
Edit4->Clear();
Edit5->Clear();
Edit6->Clear();
Edit7->Clear();
Edit8->Clear();
Edit9->Clear();
Memo2->Clear();
}
//---------------------------------------------------------------------------
Соседние файлы в папке 2