Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Класс Массив квадратов и его сортировка / CMASF
.CPP
#include<iostream.h>
#include<math.h>
#include<values.h>
#include<conio.h>
#include "Cpoint.h"
#include "Csqr.h"
#include "CmasF.h"
//--Invariant
int CmasF::inv(){}
//---Konstruktor
CmasF::CmasF(int Nmax0)
{if ((Nmax0>=-10000)&&(Nmax0<=10000))
{Nmax=Nmax0;}else{
Nmax=0;
cout<<"Osibka diapazona CmasF"<<endl;}
for (int i=0;i<Nmax;i++)
{areas[i]=0;}
}
//---Selectori
unsigned int CmasF::getN(){return Nmax;}
unsigned int CmasF::getA(int i)
{if ((i>=0)&&(i<Nmax)) {return areas[i];}
else{cout<<"Osibka diapazona getA"<<endl;}
}
Csqr CmasF::getF(int i)
{if ((i>=0)&&(i<Nmax)) {return sqrs[i];}
else{cout<<"Osibka diapazona getF"<<endl;}
}
//---Modifikatori
void CmasF::setN(int N)
{if ((N>=-10000)&&(N<=10000))
{Nmax=N;}else{cout<<"Osibka diapazona setN"<<endl;}
}
void CmasF::setA(int i, double a)
{if ((i>=0)&&(i<Nmax)&&(a>=0)&&(a<=10000))
{areas[i]=a;}else{cout<<"Osibka diapazona setA"<<endl;}
}
void CmasF::setF(int i, Csqr sqr)
{if ((i>=0)&&(i<Nmax))
{sqrs[i]=sqr;
areas[i]=sqr.area();
}else{cout<<"Osibka diapazona setF"<<endl;}
}
//---Operacii
void CmasF::Move(int i,double dx, double dy)
{if ((dx>=-10000)&&(dx<=10000)&&(dy>=-10000)&&(dy<=10000)&&
(i>=0)&&(i<Nmax))
{sqrs[i].Move(dx,dy);}
else{cout<<"osibka diapazona Move"<<endl;}
}
// -Sortirovka
void CmasF::SortA() //Sortirovka plosadey
{double x;
for (int i=Nmax-1;i>0;i--)
{
for (int j=1; j<Nmax;j++)
{if (areas[j-1]>areas[j])
{x=areas[j-1];
areas[j-1]=areas[j];
areas[j]=x;}}
}
}
void CmasF::SortF()
{Csqr sqr1;
for (int i=Nmax-1;i>0;i--)
{
for (int j=1; j<Nmax;j++)
{if (sqrs[j-1].getA()>sqrs[j].getA())
{sqr1=sqrs[j-1];
sqrs[j-1]=sqrs[j];
sqrs[j]=sqr1;}}
}
}
//---Destructor
CmasF::~CmasF()
{//cout<<endl<<"-----------------------"<<endl<<
// "Massiv umer!"<<endl;
}