Скачиваний:
50
Добавлен:
01.05.2014
Размер:
11.33 Кб
Скачать
#include<iostream.h>
#include<math.h>
#include<values.h>
#include<conio.h>

#include "PlList.h"               //Podkluchenie golovi klassa


	//Proverka pustoti

 int PlList::Empty() const
	{if (head!=0)
		{return 0;}
	 else 	{return 1;}
	}


	//Konstruktor

 PlList::PlList()
	{head=0;cur=0;Nel=0;}


	//Selectori
  unsigned int PlList::getNomp(int nom) const
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    return cur->getNom();
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}
	}


  Message PlList::SendP(int nom,Adress _Pol,double _Msg) const
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    return cur->Send(_Pol,_Msg);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}
	}

  Adress PlList::getAdr(int nom) const
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    return cur->getAdr();
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}
	}



  double PlList::getXp(int nom) const		//Planeti
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    return cur->getX();
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}

	}

  double PlList::getYp(int nom) const
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    return cur->getY();
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}

	}

  double PlList::getA(int nom) const
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    return cur->getA();
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}

	}



  double PlList::getXpt(int nom,double t) const
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    return cur->getXpt(t);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}
	}

  double PlList::getYpt(int nom,double t) const
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    return cur->getYpt(t);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}
	}

  int PlList::getV(int nom) const
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    return cur->getV();
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}
	}

  void PlList::PrintS(int nom,double t) const	//Situaciyu
	{if ((nom>0)&(t>=0))
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    cur->PrintS(t);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer ili vrema menshe 0"<<endl;getch();}
	}

 int  PlList::getNel() const     //vernut' kol-vo elementov
	{return Nel;}


	//Modifikatori

  void PlList::setV(int nom,int _V)
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    cur->setV(_V);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}

	}





  void PlList::setLmax(int nom,int _Lmax)		//Orbiti
	{if ((nom>0)&(_Lmax>0))
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    cur->setLmax(_Lmax);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer i dlina doljni bit bolshe 0"<<endl;getch();}
	}

  void PlList::setLmin(int nom,int _Lmin)
	{if ((nom>0)&(_Lmin>0))
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    cur->setLmin(_Lmin);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;getch();}
	}
	else
	{cout<<"Nomer i dlina doljni bit bolshe 0"<<endl;getch();}

	}

  void PlList::Revol(int nom,double dFi)
	{if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    cur->Revol(dFi);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;getch();}

	}

  void PlList::Masht(int nom,double dN)
	{if ((dN>0)&(nom>0))
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    cur->Masht(dN);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer i mashtab doljni bit bolshe 0"<<endl;getch();}
	}

  void PlList::Move(int nom,double dX,double dY)
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    cur->Move(dX,dY);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}


	}

  void PlList::RevolO(int nom,double dFi)
	{if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    cur->RevolO(dFi);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;getch();}

	}

  void PlList::MashtO(int nom,double dN)
	{if ((dN>0)&(nom>0))
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    cur->MashtO(dN);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer i mashtab doljni bit bolshe 0"<<endl;getch();}
	}

  void PlList::MoveO(int nom,double dX,double dY)
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	   {goHead();
	    for (int i=0;i<=Nel-nom;i++)
		{goPred();}

	    cur->MoveO(dX,dY);
	   }
	  else{cout<<"Planeti ne vvedeni "<<endl;}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;}
	 }
	 else
	 {cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}
	}


 void PlList::goPred()
	{if (Empty()==0)          //esli ne pusto,pereyti na predidushiy
		{cur=cur->getPred();}
	 else	{cout<<"Planeti ne vvedeni"<<endl;getch();}
	}

 void PlList::goHead()     //esli ne pusto,pereyti na golovu
	{if (Empty()==0)
		{cur=head;}
	 else	{cout<<"Planeti ne vvedeni "<<endl;getch();}
	}


 void PlList::insLast(Planeta* _pl)              //Vstavka v konec
	{if (Empty()==1)			//esli spisok pust
	 {head=new Plelem(_pl);
	  cur=head;
	  head->setPred(cur);

	  }
	 else{
						 //esli spisok ne pust
	 Plelem* st=new Plelem(_pl);
	 st->setPred(head->getPred());
	 head->setPred(st);
	 }
	 goHead();
	 Nel=Nel+1;
	}

 void PlList::DelPlanet(int nom)      //udalenie elementa
	{if (nom>0)
	 {
	 if (nom<=Nel)              //sravnenie s kol-vom elementov
	 {if (Empty()==0)           //proverka pustoti
	  {if (nom==1)              //esli udalaem 1iy element
	   {
	    Plelem* del;
	    del=head;
	    goHead();
	    for (int i=1;i<Nel;i++)
		{goPred();}
	    cur->setPred(head->getPred());
	    head=cur;
	    delete(del);
	    Nel=Nel-1;
	   }                        //esli udalaem ne 1 element
	   else
	   {
	    goHead();
	    for (int i=0;i<Nel-nom;i++)
		{goPred();}
	     Plelem* del;
	     del=cur->getPred();
	     cur->setPred(del->getPred());
	     delete(del);
	     Nel=Nel-1;
	   }
	  }
	  else{cout<<"Planeti ne vvedeni"<<endl;getch();}
	 }
	 else {cout<<"V spiske mense elementov!"<<endl;getch();}
	}
	else
	{cout<<"Nomer doljen bit bolshe 0"<<endl;getch();}

	}

 void PlList::PrintSys(double t)             //Vivod spiska na ekran
	{if (t>=0)
	 {
	 goHead();
	 for (int i=0;i<Nel;i++)
	  {goHead();
	   for (int j=0;j<Nel-i;j++)
	    {goPred();
		    }
	   clrscr();
	   cout<<"Kolichestvo Planet: "<<Nel<<endl;
	   cout<<"Planeta N "<<i+1<<endl<<endl;
	   cur->PrintS(t);
	   getch();
	   clrscr();

	  }
	 }
	 else
	 {cout<<"Nomer i dlina doljni bit bolshe 0"<<endl;getch();}

	}

 unsigned int PlList::ReceiveReg(Message _Msg)
	{unsigned int dost=0;
	 if (Empty()==0)
	 {
	  goHead();
	  for(int i=1;i<=getNel();i++)
	   {
	    if (getAdr(i).getAdress()==_Msg.getPol().getAdress())
		{cur->Receive(_Msg);dost=1;};
	    goPred();
	    }

	 } else {cout<<"Zaregestrirovannih net"<<endl;}
	 return dost;
	}
Соседние файлы в папке Kurs3