
Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Классы Точка и Равнобедренный Треугольник / SALMON3
.CPP#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<values.h>
#include<cpoint.h>
#include<math.h>
class Triangle
{
private: Point A, B, C; //‚ҐаиЁл ваҐгЈ®«мЁЄ
float ab, bc, ca, square; //„«Ёл бв®а® Ё Ї«®й ¤м
void parametres(); //‚лзЁб«ҐЁҐ Ї а ¬Ґва®ў
int invariant(); //Џа®ўҐаЄ бгйҐбвў®ў ЁҐ
public: Triangle(float x0[], float y0[]); //‘®§¤ ЁҐ ваҐгЈ®«мЁЄ
void SetTops(float x0[], float y0[]); //ЋЎ®§ зЁвм ўҐаиЁл
void GetTops(float x0[], float y0[]); //Џ®«гзЁвм Є®®а¤Ё вл ўҐаиЁ
void GetParametres(float length[], float &s); //Џ®«гзЁвм ¤«Ёл бв®а® Ё Ї«®й ¤м
void Move(float dx, float dy); //ЏҐаҐ®б, ® ¦Ґ б¤ўЁЈ
void Mirror(Point); //‡ҐаЄ «м®Ґ ®в®Ўа ¦ҐЁҐ
~Triangle(); //“Ёз⮦Ёвм ваҐгЈ®«мЁЄ
};
///////////////////////////////////////////////////////////////////////////////////
inline void Triangle:: SetTops(float x0[], float y0[])
{
A.SetXY(x0[0], y0[0]);
B.SetXY(x0[1], y0[1]);
C.SetXY(x0[2], y0[2]);
parametres();
}
//////////////////////////////////////////////////////////////////////////////////////
inline void Triangle:: GetTops(float x0[], float y0[])
{
A.GetXY(x0[0], y0[0]);
B.GetXY(x0[1], y0[1]);
C.GetXY(x0[2], y0[2]);
}
//////////////////////////////////////////////////////////////////////////////////////
inline void Triangle::GetParametres(float length[], float &s)
{
length[0] = ab;
length[1] = bc;
length[2] = ca;
s = square;
}
//////////////////////////////////////////////////////////////////////////////////////
inline Triangle::Triangle(float x0[], float y0[]) :A(0, 0), B(0, 0), C(0, 0)
{
SetTops(x0, y0);
cout<<"‘®§¤ ваҐгЈ®«мЁЄ."<<endl<<"Љ®®а¤Ё вл ҐЈ® ўҐаиЁ:";
cout<<"A("<<x0[0]<<" "<<y0[0]<<") ";
cout<<"B("<<x0[1]<<" "<<y0[1]<<") ";
cout<<"C("<<x0[2]<<" "<<y0[2]<<") ";
}
//////////////////////////////////////////////////////////////////////////////////////
inline void Triangle::Move(float dx, float dy)
{
A.Move(dx, dy);
B.Move(dx, dy);
C.Move(dx, dy);
}
//////////////////////////////////////////////////////////////////////////////////////
inline void Triangle::Mirror(Point O)
{
A. Mirror(O);
B.Mirror(O);
C.Mirror(O);
}
//////////////////////////////////////////////////////////////////////////////////////
inline Triangle::~Triangle()
{
// cout<<"’аҐгЈ®«мЁЄ Ў®«миҐ Ґв б ¬Ё";
}
//////////////////////////////////////////////////////////////////////////////////////
inline int Triangle::invariant()
{
float Ax, Ay, Bx, By, Cx, Cy;
A.GetXY(Ax, Ay);
B.GetXY(Bx, By);
C.GetXY(Cx, Cy);
if(((Ax==Bx)&&(Ay==By))||((Bx==Cx)&&(By==Cy))||((Bx==Cx)&&(By==Cy))
||((Ax-Bx==0)&&(Ax-Cx==0)||(Ay-By)/(Ax-Bx)==(Ay-Cy)/(Ax-Cx)))
return 0;
return 1;
}
//////////////////////////////////////////////////////////////////////////////////////
inline void Triangle:: parametres()
{
float ax, ay, bx, by, cx, cy;
float p;
A.GetXY(ax, ay);
B.GetXY(bx, by);
C.GetXY(cx, cy);
ab = sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by));
ca = sqrt((ax-cx)*(ax-cx)+(ay-cy)*(ay-cy));
bc = sqrt((cx-bx)*(cx-bx)+(cy-by)*(cy-by));
p = (ab+bc+ca)/2;
square = sqrt(p*(p-ab)*(p-bc)*(p-ca));
}
//////////////////////////////////////////////////////////////////////////////////////
void Transformation(float x0[], float y0[], float base, float height)
{
x0[1] = x0[0]+base;
y0[1] = y0[0];
x0[2] = x0[0]+base/2;
y0[2] = y0[0]+height;
}
//////////////////////////////////////////////////////////////////////////////////////
void main()
{
float x0[3], y0[3], length[3];
float dx, dy, base, height, s;
char z = 'a';
int choice, flag = 0;
do
{
clrscr();
cout<<endl<<"‘®н¤ вм ваҐгЈ®«мЁЄ............................1";
cout<<endl<<"Џа®б¬®ваҐвм Ёд®а¬ жЁо ® ваҐгЈ®«мЁЄҐ..........2";
cout<<endl<<"‘¤ўЁгвм ваҐгЈ®«мЁЄ...........................3";
cout<<endl<<"‡ҐаЄ «м® ®ва §Ёвм ®в®бЁвҐ«м® в®зЄЁ..........4";
cout<<endl<<"‚л室 Ё§ Їа®Ја ¬¬л.............................5";
cout<<endl<<"‚ и ўлЎ®а ";
cin >> choice;
switch(choice)
{
case 1:cout<<"‚ўҐ¤ЁвҐ ЎбжЁббг «Ґў®© ўҐаиЁл ЇаЁ ®б®ў ЁЁ ";
cin>>x0[0];
cout<<"‚ўҐ¤ЁвҐ ®а¤Ё вг нв®© ўҐаиЁл ";
cin>>y0[0];
cout<<"‚ўҐ¤ЁвҐ ўлб®вг а ў®ЎҐ¤аҐ®Ј® ваҐгЈ®«мЁЄ ";
cin>>height;
cout<<"‚ўҐ¤ЁвҐ ®б®ў ЁҐ а ў®ЎҐ¤аҐ®Ј® ваҐгЈ®«мЁЄ ";
cin>>base;
Transformation(x0, y0, base, height);
Triangle ABC = Triangle(x0, y0);
flag = 1;
getch();
break;
case 2:
if(!flag)
{
cout<<"’аҐгЈ®«мЁЄ ҐйҐ Ґ б®§¤ !";
getch();
}
else
{
ABC.GetTops(x0, y0);
cout<<"Љ®®а¤Ё вл в®зҐЄ: A("<<x0[0]<<"; "<<y0[0]<<")"
<<" B("<<x0[1]<<"; "<<y0[1]<<")"
<<" C("<<x0[2]<<"; "<<y0[2]<<")"<<endl;
ABC.GetParametres(length, s);
cout<<"„«Ёл бв®а®: AB = "<<length[0]
<<" BC = "<<length[1]
<<" CA = "<<length[2]<<endl;
cout<<"Џ«®й ¤м: S = "<< s;
getch();
}
break;
case 3:
if(!flag)
{
cout<<"’аҐгЈ®«мЁЄ ҐйҐ Ґ б®§¤ !";
getch();
}
else
{
cout<<"‚ўҐ¤ЁвҐ ЇҐаҐ¬ҐйҐЁҐ Ї® Ј®аЁ§®в «Ё ";
cin >>dx;
cout<<"‚ўҐ¤ЁвҐ ЇҐаҐ¬ҐйҐЁҐ Ї® ўҐавЁЄ «Ё ";
cin>>dy;
ABC.Move(dx, dy);
cout<<"’®зЄ ЇҐаҐ¬ҐйҐ "<<dx<<" Ї® Ј®аЁ§®в «Ё Ё "<<
dy<<" Ї® ўҐавЁЄ «Ё ";
getch();
}
break;
case 4:if(!flag)
{
cout<<"’аҐгЈ®«мЁЄ ҐйҐ Ґ б®§¤ !";
getch();
}
else
{
cout<<"‚ўҐ¤ЁвҐ ЎбжЁббг в®зЄЁ ";
cin>>dx;
cout<<"‚ўҐ¤ЁвҐ ®а¤Ё вг в®зЄЁ ";
cin>>dy;
Point O(dx, dy);
ABC.Mirror(O);
cout<<endl<<"’аҐгЈ®«мЁЄ бЁ¬¬ҐваЁз® ®ва ¦Ґ ®в®бЁвҐ«м® жҐва бЁ¬¬ҐваЁЁ O("<<dx<<"; "<<dy<<")";
getch();
}
break;
case 5:
z = 'e';
break;
}
}
while(z!='e');
}
Соседние файлы в папке Классы Точка и Равнобедренный Треугольник