Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа 33 / LAB 3 / MAINLIST
.CPP//File mainlist.cpp
//Naznachenie: Postroenie i ispolzovanie nabora mnogougolnikov na planshete
//Author: Pavel Morozov
//Redakcija: 2.0 13.04.07
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<stdio.h>
#include"cpoint.cpp"
#include"celtrngl.cpp"
#include"ctriangl.cpp"
#include"cpolygon.cpp"
#include"cplist.cpp"
#include"celpoly.cpp"
#include"ccoltrg.cpp"
#include"ctablet.cpp"
#include"cview.cpp"
int main()
{
cout.setf(ios::fixed); // fixed format(no exp)
cout.setf(ios::showpoint); // shows zero
cout.precision(2); // 2 posle zapiatoj
clrscr();
//Vyvod zagolovka
cout<<endl
<<endl
<<"Author: Pavel Morozov Group 4351."
<<endl
<<endl
<<"Postroenie i razrabotka programmy,modelirujushiaja"<<endl
<<"sborku razlichnyh figur, sostavlennyh iz 2 cvetnyh"<<endl
<<"treugolnikov. Postroenie naborovproizvoditsia na"
<<"priamougolnom planshete"
<<endl<<endl;
getch();
//Objavlenie i inicializacija peremennyh
CPolyList *ListPoly; //Spisok elementov(nabor mnogougolnikov)
CTriangle *FptrPoly;
CTriangle *FptrPoly2; //Ukazatel na element
CPolygon *ElemptrPoly;
CElPoly *ElList;
CColor_Triangle *ColTri1;
CColor_Triangle *ColTri2;
CView View;
char ch; //Polzovatelskij element
float x0,y0,Sq,dx,dy,x2,y2,x3,y3,fi1,h1,h2;//Atributy
int t;
CPoint *Fptr; //Ukazatel na element
CElement *Elemptr; //Ukazatel na element spiska
ListPoly= new CPolyList;
do{
end:
int i=0;
getch();
cout<<"Press any key";
clrscr();
cout<<endl
<<" Dlia vvoda koordinat vvedite 1"<<endl
<<" Dlia prosmotra koordinat mnogougolnikov vvedite 2"<<endl
<<" Dlia prosmotra ploshadej mnogougolnikov vvedite 3"<<endl
<<" Dlia peremeshenija mnogougolnikov i plansheta na dx i dy nazmite 4"<<endl
<<" Dlia peremeshenija mnogougolnikov na dx i dy nazmite 5"<<endl
<<" Dlia peremeshenija plansheta na dx i dy nazmite 6"<<endl
<<" Vyhod - 7"<<endl;
cin>>ch;
switch(ch) {
case '1':
{
//Kakoj element obrabatyvaetsia
int j=0;
/////////////////////////////////////////////////////////
// pervyj treugolnik //
/////////////////////////////////////////////////////////
// FptrPoly = new CTriangle;
ColTri1 = new CColor_Triangle(9);
while (j<3)
{
j=j+1;
cout<<endl<<endl;
cprintf(" VVod koordinat dlia tochki ");
cout<<j<<endl;
//VVod znachenija
cout<<endl;
//////////////////////
//vvod znachenija x //
//////////////////////
cout<<endl;
cprintf("x= ");
cin>>x0;
cout<<endl;
//////////////////////
//vvod znachenija y //
//////////////////////
cout<<endl;
cprintf("y= ");
cin>>y0;
cout<<endl;
if(j==1)
{
dx=x0;dy=y0;
}
if(j==2)
{
x2=x0;y2=y0;
}
if(j==3)
{
x3=x0;y3=y0;
}
//Vydelenie pamiati dlia elementa
Fptr= new CPoint;
//Ustanovka elementa
Fptr->SetX(x0,y0);
//Vydelenie pamiati i ustanovka ukazatelia na element
Elemptr=new CElement(Fptr);
//Vstavka elementa v spisok
// FptrPoly->Insert(Elemptr);
ColTri1 ->Insert(Elemptr);
Fptr=0;Elemptr=0;
/*
if(j==3)
{
printf("Ploshad objekta:");
FptrPoly->Square(Sq);
if(Sq==0)
{ clrscr();
textcolor(13);
cout<<endl<<"Vse tochki lezat na odnoj priamoj, povtorite vvod"<<endl;
cout<<endl; goto end;
textcolor(15);
}
} */
}
/////////////////////////////////////////////////////////
// vtoroj treugolnik //
/////////////////////////////////////////////////////////
// FptrPoly2 = new CTriangle;
ColTri2 = new CColor_Triangle(10);
cout<<endl<<endl;
end2:
cprintf("Vvedite koordinaty tochki D ");
//VVod znachenija
cout<<endl;
//////////////////////
//vvod znachenija x //
//////////////////////
cout<<endl;
cprintf("x= ");
cin>>x0;
cout<<endl;
//////////////////////
//vvod znachenija y //
//////////////////////
cout<<endl;
cprintf("y= ");
cin>>y0;
cout<<endl;
h2=(y2-y3)/(x2-x3)*x0+(y2*x3-y3*x2)/(x3-x2)-y0;
h1=(y2-y3)/(x2-x3)*dx+(y2*x3-y3*x2)/(x3-x2)-dy;
cout<<"h1= "<<h1<<", h2= "<<h2<<endl;
getch();
if(((h1>0)&&(h2<0))||((h1<0)&&(h2>0)))
{
//Vydelenie pamiati dlia elementa
Fptr= new CPoint;
//Ustanovka elementa
Fptr->SetX(x0,y0);
//Vydelenie pamiati i ustanovka ukazatelia na element
Elemptr=new CElement(Fptr);
//Vstavka elementa v spisok
// FptrPoly2->Insert(Elemptr);
ColTri2 ->Insert(Elemptr);
}
else goto end2;
/////////////////////////////////////////////////////////////////
//VVod koordinat tochki B
////////////////////////////////////////////////////////////////
//Vydelenie pamiati dlia elementa
Fptr= new CPoint;
//Ustanovka elementa
Fptr->SetX(x2,y2);
//Vydelenie pamiati i ustanovka ukazatelia na element
Elemptr=new CElement(Fptr);
//Vstavka elementa v spisok
// FptrPoly2->Insert(Elemptr);
ColTri2 ->Insert(Elemptr);
getch();
////////////////////////////////////////////////////////////////
//Vvod koordinat tochki C
////////////////////////////////////////////////////////////////
//Vydelenie pamiati dlia elementa
Fptr= new CPoint;
//Ustanovka elementa
Fptr->SetX(x3,y3);
//Vydelenie pamiati i ustanovka ukazatelia na element
Elemptr=new CElement(Fptr);
//Vstavka elementa v spisok
// FptrPoly2->Insert(Elemptr);
ColTri2 ->Insert(Elemptr);
getch();
/////////////////////////////////////////////////////////////////
ElemptrPoly = new CPolygon;
ElemptrPoly->SetFptrPoly(ColTri1,ColTri2);
ElList= new CElPoly(ElemptrPoly);
ListPoly->InsertPoly(ElList);
View.SetPtr(ListPoly);
i=i+1;
getch();
//Obnulenie ukazatelej
FptrPoly=0;ElemptrPoly=0;FptrPoly2=0;ColTri2=0;ColTri1=0;
break; }
case '2': {
clrscr();
//Vyvod spiska elementov
View.OutList();
// ListPoly->OutListPoly();
break; }
case '3':{
ListPoly->SquarePoly(); break; }
case '4': {
cout<<"Vvedite dx i dy";
cin>>dx>>dy;
View.Move_Set_Planshet_dx_dy(dx,dy);
// ListPoly.MovePoly(dx,dy);
break;
}
case '5':{
cout<<"VVedite nomer mnogougolnika, kotoryj budet peremeshiatsia";
cin>>t;
cout<<"Vvedite koordinaty tochki - dx i dy";
cin>>dx>>dy;
View.Move_Set(dx,dy,t); break;
}
case '6':{
cout<<"Vvedite koordinaty tochki - dx i dy";
cin>>dx>>dy;
View.MoveFigure(dx,dy); break;
}
}
}while (ch!='7');
cprintf("Zavershenie raboty.");
cout<<endl<<endl;
cout<<endl<<"Nazmite probel...";
getch();
return 0;
}