Скачиваний:
17
Добавлен:
01.05.2014
Размер:
6.28 Кб
Скачать
#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');
}
Соседние файлы в папке Классы Точка и Равнобедренный Треугольник