
6. CTrOnBoard.Cpp
#ifndef CPP007
#define CPP007
#include "cTrOnBoard.h"
cTrOnBoard::cTrOnBoard() //constructor
{
First=NULL;
cPoint P(0,0);
double R = 1;
Set(P,R);
}
cTrOnBoard::cTrOnBoard(cPoint P, double R) //constructor
{
First=NULL;
Set(P,R);
}
int cTrOnBoard::Correct(cColTriangle T) //check triangle
{
int A =
// ((T.GetTop(0)).Distance(GetX(),GetY()) <= GetStor() + 0.01) &&
// ((T.GetTop(1)).Distance(GetX(),GetY()) <= GetStor() + 0.01) &&
// ((T.GetTop(2)).Distance(GetX(),GetY()) <= GetStor() + 0.01);
((T.GetTop(0)).GetX() >= GetX()) && ((T.GetTop(0)).GetX() <= GetX()+GetStor()) && ((T.GetTop(0)).GetY() <= GetY()) && ((T.GetTop(0)).GetY() >= GetY()-GetStor()) &&
((T.GetTop(1)).GetX() >= GetX()) && ((T.GetTop(1)).GetX() <= GetX()+GetStor()) && ((T.GetTop(1)).GetY() <= GetY()) && ((T.GetTop(1)).GetY() >= GetY()-GetStor()) &&
((T.GetTop(2)).GetX() >= GetX()) && ((T.GetTop(2)).GetX() <= GetX()+GetStor()) && ((T.GetTop(2)).GetY() <= GetY()) && ((T.GetTop(2)).GetY() >= GetY()-GetStor());
return A;
}
void cTrOnBoard::addontable(cColTriangle T) //add triangle if corret
{
if (Correct(T))
add(T);
}
void cTrOnBoard::reform() //delete incorect triangles
{
tobegin();
cColTriangle T;
if (!Empty())
while ((*current).GetNext() != First)
{
GetInf(T);
if (Correct(T))
move();
else
del();
};
if (!Empty())
{
GetInf(T);
if (!Correct(T))
del();
};
tobegin();
}
void cTrOnBoard::SetNewCenter(cPoint P) //center modification + reform
{
SetCenter(P);
reform();
}
void cTrOnBoard::SetNewStor(double R) //Stor modification + reform
{
SetStor(R);
reform();
}
void cTrOnBoard::boardout() //out list on screen
{
cout<<"The map-board center: ";
cPoint P(GetX(),GetY());
P.out();
cout<<endl<<"The map-board Stor: "<<GetStor()<<endl<<endl;
out();
}
cTrOnBoard::~cTrOnBoard(){} //destructor
#endif
7. Tester3.Cpp
#include <stdio.h>
#include "cTrOnBoard.cpp"
void main()
{
cout.precision(3);
cPoint P(-2,2),P1(-1,-1),P2(1,-1),P3(0,1);
cColTriangle T1,T2(P1,P2,P3),T3;
T2.SetColor(green);
clrscr();
cprintf("Program for test list of colorer triangles and square map-board");
cout<<endl<<endl;
getch();
cprintf("------------- initializing map board");
cout<<endl<<endl;
cTrOnBoard Board(P,4);
Board.boardout();
cout<<endl<<endl;
getch();
cprintf("------------- Adding 2 triangles");
cout<<endl<<endl;
Board.addontable(T1);
Board.addontable(T2);
Board.boardout();
cout<<endl;
getch();
cprintf("------------- Rotate ((-1;-1) (1;-1) (0;1)) by ((3;0);-Pi/2)");
cout<<endl<<endl;
Board.move();
Board.GetCur(T3);
T3.Rotate(3,0,-1.57089632679);
Board.addontable(T3);
Board.boardout();
cout<<endl;
getch();
cprintf("------------- Change the ((0;0) (1;0) (0;1))'s color ");
cout<<endl<<endl;
Board.GetCur(T3);
T3.SetColor(blue);
Board.addontable(T3);
Board.boardout();
cout<<endl;
getch();
cprintf("------------- Try to add ((0;0) (11;0) (0;11))");
cout<<endl<<endl;
T1.Scale(11);
Board.addontable(T1);
Board.boardout();
cout<<endl;
getch();
cprintf("------------- Rotate ((0;0) (1;0) (0;1)) by ((0;0);Pi)");
cout<<endl<<endl;
Board.GetCur(T3);
T3.Rotate(0,0,3.14159265358);
Board.addontable(T3);
Board.boardout();
cout<<endl;
getch();
cprintf("------------- Change board center to (-1;1)");
cout<<endl<<endl;
cPoint NC(3,0);
Board.Set(NC,Board.GetStor());
Board.boardout();
cout<<endl;
getch();
cprintf("------------- Change board stor to 1.5");
cout<<endl<<endl;
Board.SetNewStor
(1);
Board.boardout();
cout<<endl;
getch();
}
Вывод.
Разработаная программа, отвечает заданию и корректная с точностью до всех проведенных тестов.