Скачиваний:
12
Добавлен:
01.05.2014
Размер:
7.25 Кб
Скачать
//File mainlist.cpp
//Naznachenie: Postroenie i ispolzovanie nabora mnogougolnikov
//Author: Pavel Morozov
//Redakcija: 2.0 13.04.07

#include<iostream.h>
#include<math.h>               
#include<conio.h>
#include<stdio.h>

#include"cpoint.h"
#include"cpoint.cpp"

#include"CELTRNGL.h"
#include"CELTRNGL.cpp"

#include"ctriangl.h"
#include"ctriangl.cpp"

#include"cpolygon.h"
#include"cpolygon.cpp"

#include"cplist.h"
#include"cplist.cpp"

#include"celpoly.h"
#include"celpoly.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 ispolzovanie nabora mnogougolnikov,"<<endl
	   <<"obrazovannyh slozeniem dvuh treugolnikov,"<<endl
	   <<"Kazdyj iz kotoryh predstavlen linejnym odnonapravlennym spiskom."
	   <<endl<<endl;cout<<"Red2"<<endl;

       //Objavlenie i inicializacija peremennyh


	CPolyList ListPoly;	//Spisok elementov(nabor mnogougolnikov)
	CTriangle *FptrPoly;
	CTriangle *FptrPoly2; 	//Ukazatel na element
	CPolygon *ElemptrPoly;
        CElPoly *ElList;
	char ch;              //Polzovatelskij element
	float x0,y0,Sq,dx,dy,x2,y2,x3,y3,fi1,h1,h2;//Atributy

       // CTriangle List;		//Spisok elementov
	CPoint *Fptr;           //Ukazatel na element
	CElement *Elemptr;      //Ukazatel na element spiska
	

    do{
    end:

       //Vvod elementov spiska
       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 na dx i dy nazmite 4"<<endl
	 <<" Dlia vrashenija mnogougolnikov nazmite 5"<<endl

	 <<" Vyhod - 6"<<endl;



	 cin>>ch;

	 switch(ch) {
 case '1':
 {

	textcolor(15);
	cout<<endl<<endl;

	cout<<endl<<endl;
    

	
      //Kakoj element obrabatyvaetsia
      int j=0;
 /////////////////////////////////////////////////////////
 // pervyj treugolnik                                   //
 /////////////////////////////////////////////////////////


	     FptrPoly = new CTriangle;
	  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);
	      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;
	     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);              



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

/////////////////////////////////////////////////////////////////
	      



	      ElemptrPoly = new CPolygon;//(FptrPoly);
	      ElemptrPoly->SetFptrPoly(FptrPoly,FptrPoly2);

	      ElList = new CElPoly(ElemptrPoly);   
          
	      ListPoly.InsertPoly(ElList);

	      i=i+1;

	      getch();              
	      //Obnulenie ukazatelej
	      FptrPoly=0;ElemptrPoly=0;FptrPoly2=0;

      break;  }

                                         
     case '2': {
     clrscr();
     //Vyvod spiska elementov
     //  cout<<endl<<"Ishodnyj spisok "<<i<<" elementov";

     ListPoly.OutListPoly();   break; }

     case '3':{  ListPoly.SquarePoly();     break;  }

     case '4': {
     cout<<"Vvedite dx i dy";
     cin>>dx>>dy;
     ListPoly.MovePoly(dx,dy); break;
     }

     case '5':{

     CPoint Q;
     cout<<"Vvedite koordinaty tochki - x, y, i ugol fi"
     <<" vokrug kotoroy budet osushestvlen povorot";
     cin>>dx>>dy>>fi1;
     Q.SetX(dx,dy);
     ListPoly.RotatePoly(Q,fi1);break;}


	 }
	 }while (ch!='6');
	   cprintf("Zavershenie raboty.");
	   cout<<endl<<endl;
	   cout<<endl<<"Nazmite probel...";
	   getch();
	   return 0;
}



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