Скачиваний:
14
Добавлен:
01.05.2014
Размер:
97.79 Кб
Скачать

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();

}

Вывод.

Разработаная программа, отвечает заданию и корректная с точностью до всех проведенных тестов.

Соседние файлы в папке Лабораторная работа 32