Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Классы Точка и Равнобедренный Треугольник / SALMON4
.CPP
#include<iostream.h>
#include<dos.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();
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<<"‘®§¤ ваҐгЈ®«мЁЄ."<<endl<<"Љ®®а¤Ё вл ҐЈ® ўҐаиЁ:";
cout<<"A("<<x0[0]<<" "<<y0[0]<<") ";
cout<<"B("<<x0[1]<<" "<<y0[1]<<") ";
cout<<"C("<<x0[2]<<" "<<y0[2]<<") ";
}
//////////////////////////////////////////////////////////////////////////////////////
inline Triangle::Triangle() :A(0, 0), B(0, 0), C(0, 0)
{
}
//////////////////////////////////////////////////////////////////////////////////////
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;
}
/////////////////////////////////////////////////////////////////////////////////////
Triangle MadeITriangle(float x0[], float y0[])
{
float base, height;
cout<<"‚ўҐ¤ЁвҐ ЎбжЁббг «Ґў®© ўҐаиЁл ЇаЁ ®б®ў ЁЁ ";
cin>>x0[0];
cout<<"‚ўҐ¤ЁвҐ ®а¤Ё вг нв®© ўҐаиЁл ";
cin>>y0[0];
cout<<"‚ўҐ¤ЁвҐ ўлб®вг а ў®ЎҐ¤аҐ®Ј® ваҐгЈ®«мЁЄ ";
cin>>height;
cout<<"‚ўҐ¤ЁвҐ ®б®ў ЁҐ а ў®ЎҐ¤аҐ®Ј® ваҐгЈ®«мЁЄ ";
cin>>base;
Transformation(x0, y0, base, height);
Triangle ABC = Triangle(x0, y0);
return ABC;
}
//////////////////////////////////////////////////////////////////////////////////////
Triangle RandomITriangle(float x0[], float y0[])
{
float base, height;
x0[0] = random(100);
y0[0] = random(100);
base = random(100);
height = random(100);
Transformation(x0, y0, base, height);
Triangle ABC = Triangle(x0, y0);
return ABC;
}
/////////////////////////////////////////////////////////////////////////////////////
void Print(Triangle ABC)
{
float x0[3], y0[3], length[3], s;
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;
}
//////////////////////////////////////////////////////////////////////////////////////
void main()
{
const int MAXIMUM = 100;
Triangle ABC[MAXIMUM];
float x0[3], y0[3], length[3];
float dx, dy;
char z = 'a';
int i, choice, choice1, choice2, flag = 0, count = 0, number;
randomize;
do
{
clrscr();
cout<<endl<<"‘®н¤ вм ¬ ббЁў ваҐгЈ®«мЁЄ®ў..........................1";
cout<<endl<<"ђ Ў®в вм б ¬ ббЁў®¬ ваҐгЈ®«мЁЄ®ў.....................2";
cout<<endl<<"ђ Ў®в вм б ®в¤Ґ«мл¬ ваҐгЈ®«мЁЄ®¬....................3";
cout<<endl<<"‚л室 ................................................5";
cout<<endl<<"‚ и ўлЎ®а ";
cin >> choice;
switch(choice)
{
case 1:
do
{
clrscr();
cout<<"‚ўҐ¤ЁвҐ Ї®¦ «г©бв Є®«ЁзҐбвў® н«Ґ¬Ґв®ў-ваҐгЈ®«мЁЄ®ў ";
cin>>count;
if((count>MAXIMUM)||count<=0)
{
cout<<"ќв® ҐЄ®а४⮥ § 票Ґ. Љ®«ЁзҐбвў® ¤®«¦® Ўлвм Ї®«®¦ЁвҐ«мл¬ Ё Ґ Ў®«миҐ "<<MAXIMUM;
getch();
}
}
while((count>MAXIMUM)||(count<=0));
cout<<"Љ ЄЁ¬ ®Ўа §®¬ Ўг¤Ґв ᮧ¤ ў вмбп ¬ ббЁў ваҐгЈ®«мЁЄ®ў?";
cout<<endl<<"ђгзЄ ¬Ё - 1"<<endl<<"‘«гз ©® - 2"<<endl;
cin>>choice1;
if(choice1==1)
for(i=0;i<count;i++)
{
ABC[i] = MadeITriangle(x0, y0);
getch();
}
if(choice1==2)
{
for(i=0;i<count;i++)
{
cout<<endl<<"’аҐгЈ®«мЁЄ ь"<<i+1;
ABC[i] = RandomITriangle(x0, y0);
delay(900);
}
cout<<endl<<"‘®§¤ ЁҐ ¬ ббЁў ваҐгЈ®«мЁЄ®ў § Є®зҐ®!";
}
if((choice1)==1||(choice1==2))
flag = 1;
else
cout<<"Љ ᮦ «ҐЁо ўл Ґ ᬮЈ«Ё ᮧ¤ вм ¬ ббЁў.Џ®Їа®Ўг©вҐ ҐйҐ а §";
getch();
break;
case 2:
if(!flag)
{
cout<<"’аҐгЈ®«мЁЄ ҐйҐ Ґ ᮧ¤ !";
getch();
}
else
{
do
{
clrscr();
cout<<endl<<"Џа®б¬®ваҐвм Ёд®а¬ жЁо ® ваҐгЈ®«мЁЄ е........1";
cout<<endl<<"‘¤ўЁгвм ўбҐ ваҐгЈ®«мЁЄЁ.....................2";
cout<<endl<<"‡ҐаЄ «м® ®ва §Ёвм ўҐбм ¬ ббЁў................3";
cout<<endl<<"‚л©вЁ Ё§ Ї®¤¬Ґо..............................4";
cout<<endl<<"‚ и ўлЎ®а ";
cin>>choice1;
switch(choice1)
{
case 1:for(i=0;i<count;i++)
{
clrscr();
Print(ABC[i]);
delay(1000);
}
break;
case 2:cout<<"‚ўҐ¤ЁвҐ ЇҐаҐ¬ҐйҐЁҐ Ї® Ј®аЁ§®в «Ё ";
cin >>dx;
cout<<"‚ўҐ¤ЁвҐ ЇҐаҐ¬ҐйҐЁҐ Ї® ўҐавЁЄ «Ё ";
cin>>dy;
for(i=0;i<count;i++)
ABC[i].Move(dx, dy);
break;
case 3: cout<<"‚ўҐ¤ЁвҐ ЎбжЁббг жҐва бЁ¬¬ҐваЁЁ ";
cin>>dx;
cout<<"‚ўҐ¤ЁвҐ ®а¤Ё вг жҐва бЁ¬¬ҐваЁЁ ";
cin>>dy;
Point O(dx, dy);
for(i=0;i<count;i++)
ABC[i].Mirror(O);
break;
case 4: break;
}
}
while(choice1!=4);
}
break;
case 3:
if(!flag)
{
cout<<"’аҐгЈ®«мЁЄ ҐйҐ Ґ ᮧ¤ !";
getch();
}
else
{
do
{
clrscr();
cout<<endl<<"‚лЎа вм Ё«Ё ᬥЁвм ®¬Ґа ваҐгЈ®«мЁЄ .......1";
cout<<endl<<"Џа®б¬®ваҐвм Ёд®а¬ жЁо ® ваҐгЈ®«мЁЄҐ........2";
cout<<endl<<"‘¤ўЁгвм ваҐгЈ®«мЁЄ.........................3";
cout<<endl<<"‡ҐаЄ «м® ®ва §Ёвм ваҐгЈ®«мЁЄ...............4";
cout<<endl<<"‚л©вЁ Ё§ Ї®¤¬Ґо.............................5";
cout<<endl<<"‚ и ўлЎ®а ";
cin>>choice2;
switch(choice2)
{
case 1: clrscr();
cout<<"Љ Є®© ваҐгЈ®«мЁЄ ўл ўлЎҐаҐвҐ ";
cin>>number;
if((number>count)||(number<0))
{ cout<<"ЌҐЇ®¤е®¤пйЁ© ®¬Ґа.";
getch();
}
break;
case 2: clrscr();
Print(ABC[number-1]);
getch();
break;
case 3: cout<<"‚ўҐ¤ЁвҐ ЇҐаҐ¬ҐйҐЁҐ Ї® Ј®аЁ§®в «Ё ";
cin >>dx;
cout<<"‚ўҐ¤ЁвҐ ЇҐаҐ¬ҐйҐЁҐ Ї® ўҐавЁЄ «Ё ";
cin>>dy;
ABC[number-1].Move(dx, dy);
break;
case 4: cout<<"‚ўҐ¤ЁвҐ ЎбжЁббг в®зЄЁ ";
cin>>dx;
cout<<"‚ўҐ¤ЁвҐ ®а¤Ё вг в®зЄЁ ";
cin>>dy;
Point O(dx, dy);
ABC[number-1].Mirror(O);
cout<<endl<<"’аҐгЈ®«мЁЄ бЁ¬¬ҐваЁз® ®ва ¦Ґ ®в®бЁвҐ«м® жҐва бЁ¬¬ҐваЁЁ O("<<dx<<"; "<<dy<<")";
getch();
break;
case 5: break;
}
}
while(choice2!=5);
}
break;
case 5:
z = 'e';
break;
}
}
while(z!='e');
}
Соседние файлы в папке Классы Точка и Равнобедренный Треугольник