Скачиваний:
19
Добавлен:
01.05.2014
Размер:
3.47 Кб
Скачать
//-File opisaniya SqrList.h

#include<iostream.h>
#include<math.h>
#include<values.h>
#include<conio.h>
#include "Csqr.h"
#include "Cpoint.h"
#include "elem.h"
#include "Sqrlist.h"


  //-Proverka pustoti
  int Sqrlist::Empty()
      {if (head!=0)
	  {return 0;}
	  else {return 1;}
      }


  //-Konstruktor
  Sqrlist::Sqrlist()
  {head=0;cur=0;Nel=0;}

  //-Destruktor
  Sqrlist::~Sqrlist()
  {cout<<"Spisok razrushen! "<<endl;getch();}


  //-Selectori
  void Sqrlist::goNext()                //-Perehod na sleduyushiy element
  {if (Empty()==0)
      {if (cur!=0)
	  {cur=cur->getN();}
	  else{cout<<"Konec spiska (goNext)"<<endl;}
      }else{cout<<"Spisok pust (goNext)"<<endl;}
  }


  void Sqrlist::goFirst()		//-Perehod na nachalo spiska
  {if (Empty()==0)
      {cur=head;}
      else{cout<<"Spisok pust (goFirst) "<<endl;}
  }


  Csqr Sqrlist::getF()			//-vozvrat figuri
  {if (Empty()==0)
      {if (cur!=0)
      {return cur->getF();}
      else{cout<<"Spisok pust (getV) "<<endl;}
      }else{cout<<"Spisok pust (getV) "<<endl;}

  }

  elem Sqrlist::getEl()			//-vozvrat elementa spiska
  {if (cur!=0)
      {return *cur;}
      else{cout<<"Spisok pust (getEl)"<<endl;}
  }


  int Sqrlist::getNel(){return Nel;}	//-Vozvrat kol-va elementov




  //-Modifikatori
    //Vstavka v nachalo
  void Sqrlist::insFirst(Csqr sqr0)
       {elem* st=head;
	head=new elem(sqr0);
	head->setNext(st);
	goFirst();
	Nel=Nel+1;

	if (head->getF().getA()==sqr0.getA())
		{cout<<"Uspesno vstavili v nachalo!!!"<<endl;
		     //<<"Znachenie vstavlennogo: "<<head->getV()<<endl;
		cout<<"elementov: "<<Nel<<endl;}
		else {cout<<"Oblom so vstavkoy v nachalo!!"<<endl;}
       }

     //Vstavka v konec
  void Sqrlist::insLast(Csqr sqr0)
       {if (Empty()==1){insFirst(sqr0);}else{

	elem* last=new elem(sqr0);
	last->setNext(0);

	goFirst();

	for (int i=1;i<Nel;i++)
	{goNext();}

	cur->setNext(last);
	Nel=Nel+1;

	goNext();
	if (cur->getF().getA()==sqr0.getA())
		{cout<<"Uspesno vstavili v konec!!!"<<endl;
		//<<"Znachenie vstavlennigo: "<<cur->getV()<<endl;
		cout<<"elementov: "<<Nel<<endl;}
		else {cout<<"Oblom so vstavkoy v konec!!"<<endl;}
	goFirst();
       }
       }



     //-Udalenie i ogo elementa
  void Sqrlist::delel(int nom)
       {if (nom<=Nel)
	{
	if (Empty()==0)
	{ if (nom==1)
	   {elem* del;
	    del=head;
	    head=head->getN();
	    delete(del);
	    Nel=Nel-1;
	    }else{



	goFirst();

	for (int i=1;i<nom-1;i++)
	{goNext();}

	elem* del;
	del=cur->getN();
	cur->setNext(del->getN());

	Nel=Nel-1;

	delete(del);}
	}else {cout<<"Spisok pust (delete)"<<endl;}
	}else {cout<<"V spiske mense elementov!"<<endl;}
       }

 //-Operacii

  //-vivod spiska
  void Sqrlist::PrintList()
  {
      goFirst();
       cout<<"kol-vo elementov"<<Nel<<endl;

   for (int i=0;i<Nel;i++)
     {cout<<"Abscissa: "<<cur->getF().getX()<<endl;
      cout<<"Ordinata: "<<cur->getF().getY()<<endl;
      cout<<"Dlina storoni: "<<cur->getF().getA()<<endl
      <<endl;
      goNext();}

   goFirst();

  }


  //-Vivod spiska plosadey
  void Sqrlist::PrintAreas(int min)
  {
      goFirst();
       cout<<"kol-vo elementov"<<Nel<<endl;

   for (int i=0;i<Nel;i++)
      { if (cur->getF().area()>=min)
	{

      cout<<" "<<cur->getF().area();
      goNext();}}

   goFirst();

  }


Соседние файлы в папке Класс Список квадратов