Скачиваний:
10
Добавлен:
01.05.2014
Размер:
7.89 Кб
Скачать
//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;
}



Соседние файлы в папке LAB 3