Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- * Voved
- -dinamicka alokacija
- -operatori
- Primer so Tocka
- using namespace std;
- class Tocka{
- private:
- int x;
- int y;
- public:
- Tocka(){cout<<"Default constructor"<<endl;}
- Tocka(const Tocka &objekt){
- cout<<"Copy constructor"<<endl;
- this->x=objekt.x;
- this->y=objekt.y;
- }
- Tocka(int x,int y){
- this->x=x;
- this->y=y;
- cout<<"Parameter constructor"<<endl;
- }
- void print(){
- cout<<"x="<<this->x<<" y="<<this->y<<endl;
- }
- // shto vrakja - koj operator - shto ima desno od operatorot
- // 3 tipa - objekt, bool, input/output
- // logicki operatori
- // >
- bool operator>(Tocka &objektDesno){
- if(this->x>objektDesno.x && this->y>objektDesno.y){
- return true;
- }else{
- return false;
- }
- }
- // >=
- bool operator>=(Tocka &objektDesno){
- if(this->x>=objektDesno.x && this->y>=objektDesno.y){
- return true;
- }else{
- return false;
- }
- }
- // <
- bool operator<(Tocka &objektDesno){
- if(this->x<objektDesno.x && this->y<objektDesno.y){
- return true;
- }else{
- return false;
- }
- }
- // ==
- bool operator==(Tocka &objektDesno){
- if(this->x==objektDesno.x && this->y==objektDesno.y){
- return true;
- }else{
- return false;
- }
- }
- // !=
- bool operator!=(Tocka &objektDesno){
- if(this->x!=objektDesno.x && this->y!=objektDesno.y){
- return true;
- }else{
- return false;
- }
- }
- // input/output
- // input operator >>
- friend istream& operator>>(istream &input,Tocka &objekt){
- input>>objekt.x>>objekt.y;
- return input;
- }
- // output operator <<
- friend ostream& operator<<(ostream &output,Tocka &objekt){
- output<<"x="<<objekt.x<<" y="<<objekt.y;
- return output;
- }
- // +
- Tocka& operator+(Tocka &desnoObjekt){
- Tocka tret;
- tret.x = this->x + desnoObjekt.x;
- tret.y = this->y + desnoObjekt.y;
- return tret;
- }
- // -
- Tocka& operator-(Tocka &desnoObjekt){
- Tocka tret;
- tret.x = this->x - desnoObjekt.x;
- tret.y = this->y - desnoObjekt.y;
- return tret;
- }
- // +=
- Tocka& operator+=(Tocka &desnoObjekt){
- this->x+=desnoObjekt.x;
- this->y+=desnoObjekt.y;
- return *this;
- }
- // -=
- Tocka& operator-=(Tocka &desnoObjekt){
- this->x-=desnoObjekt.x;
- this->y-=desnoObjekt.y;
- return *this;
- }
- // prefix ++
- Tocka& operator++(){
- this->x++;
- this->y++;
- return *this;
- }
- // prefix --
- Tocka& operator--(){
- this->x--;
- this->y--;
- return *this;
- }
- // postfix
- Tocka& operator++(int){
- Tocka nov(*this);
- this->x++;
- this->y++;
- return nov;
- }
- //
- int& operator[] (int x) {
- return a[x];
- }
- //objekt1=objekt2;
- Tocka& operator=(Tocka &drugObjekt){
- cout<<"Operator ="<<endl;
- if(this!=&drugObjekt){
- this->x=drugObjekt.x;
- this->y=drugObjekt.y;
- }
- return *this;
- }
- float rastojanieDoCentar(){
- return sqrt(x*x+y*y);
- }
- };
- void najbliskuDoCentar(Tocka niza[],int n){
- float minimumDoCentar=999999;
- int pozicijaVoNiza;
- for(int i=0;i<n;i++){
- if(niza[i].rastojanieDoCentar()<minimumDoCentar){
- minimumDoCentar=niza[i].rastojanieDoCentar();
- pozicijaVoNiza=i;
- }
- }
- cout<<"Tockata shto e najblisku do centar e "<<niza[pozicijaVoNiza]<<" , oddalecena e od centarot "<<minimumDoCentar<<endl;
- }
- void podalekuOdRastojanie(Tocka niza[],int n,float rastojanie){
- int brojac=0;
- for(int i=0;i<n;i++){
- if(niza[i].rastojanieDoCentar()>rastojanie){
- brojac++;
- }
- }
- cout<<"Tocki poodaleceni od "<<rastojanie<<" se vkupno "<<brojac<<endl;
- }
- int main(){
- int n;
- cin>>n;
- Tocka niza[n];
- float rastojanie;
- cin>>rastojanie;
- for(int i=0;i<n;i++){
- cin>>niza[i];
- cout<<"Tockata "<<niza[i]<<" e oddalecena od centarot za ";
- cout<<niza[i].rastojanieDoCentar()<<endl;
- }
- najbliskuDoCentar(niza,n);
- podalekuOdRastojanie(niza,n,rastojanie);
- /*
- Tocka prazenObjekt;
- Tocka prva(2,5);
- // copy constructor call
- Tocka vtora(prva);
- Tocka treta;
- treta = prva;
- cout<<treta;
- cout<<++treta;
- //cout<<treta++;
- cout<<treta;
- Tocka treta;
- treta = prva + vtora;
- cout<<treta;
- Tocka cetvrta;
- */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment