borisdexter

Operatori

Jan 21st, 2020
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.33 KB | None | 0 0
  1. * Voved
  2. -dinamicka alokacija
  3. -operatori
  4.  
  5. Primer so Tocka
  6.  
  7.  
  8. using namespace std;
  9. class Tocka{
  10. private:
  11.     int x;
  12.     int y;
  13. public:
  14.     Tocka(){cout<<"Default constructor"<<endl;}
  15.     Tocka(const Tocka &objekt){
  16.     cout<<"Copy constructor"<<endl;
  17.     this->x=objekt.x;
  18.     this->y=objekt.y;
  19.     }
  20.     Tocka(int x,int y){
  21.     this->x=x;
  22.     this->y=y;
  23.     cout<<"Parameter constructor"<<endl;
  24.     }
  25.     void print(){
  26.     cout<<"x="<<this->x<<" y="<<this->y<<endl;
  27.     }
  28.     // shto vrakja - koj operator - shto ima desno od operatorot
  29.     // 3 tipa - objekt, bool, input/output
  30.     // logicki operatori
  31.     // >
  32.     bool operator>(Tocka &objektDesno){
  33.     if(this->x>objektDesno.x && this->y>objektDesno.y){
  34.         return true;
  35.     }else{
  36.         return false;
  37.     }
  38.     }
  39.     // >=
  40.     bool operator>=(Tocka &objektDesno){
  41.     if(this->x>=objektDesno.x && this->y>=objektDesno.y){
  42.         return true;
  43.     }else{
  44.         return false;
  45.     }
  46.     }
  47.     // <
  48.     bool operator<(Tocka &objektDesno){
  49.     if(this->x<objektDesno.x && this->y<objektDesno.y){
  50.         return true;
  51.     }else{
  52.         return false;
  53.     }
  54.     }
  55.     // ==
  56.     bool operator==(Tocka &objektDesno){
  57.     if(this->x==objektDesno.x && this->y==objektDesno.y){
  58.         return true;
  59.     }else{
  60.         return false;
  61.     }
  62.     }
  63.     // !=
  64.     bool operator!=(Tocka &objektDesno){
  65.     if(this->x!=objektDesno.x && this->y!=objektDesno.y){
  66.         return true;
  67.     }else{
  68.         return false;
  69.     }
  70.     }
  71.  
  72.     // input/output
  73.     // input operator >>
  74.     friend istream& operator>>(istream &input,Tocka &objekt){
  75.     input>>objekt.x>>objekt.y;
  76.     return input;
  77.     }
  78.     // output operator <<
  79.     friend ostream& operator<<(ostream &output,Tocka &objekt){
  80.     output<<"x="<<objekt.x<<" y="<<objekt.y;
  81.     return output;
  82.     }
  83.  
  84.     // +
  85.     Tocka& operator+(Tocka &desnoObjekt){
  86.     Tocka tret;
  87.     tret.x = this->x + desnoObjekt.x;
  88.     tret.y = this->y + desnoObjekt.y;
  89.     return tret;
  90.     }
  91.     // -
  92.     Tocka& operator-(Tocka &desnoObjekt){
  93.     Tocka tret;
  94.     tret.x = this->x - desnoObjekt.x;
  95.     tret.y = this->y - desnoObjekt.y;
  96.     return tret;
  97.     }
  98.     // +=
  99.     Tocka& operator+=(Tocka &desnoObjekt){
  100.     this->x+=desnoObjekt.x;
  101.     this->y+=desnoObjekt.y;
  102.     return *this;
  103.     }
  104.     // -=
  105.     Tocka& operator-=(Tocka &desnoObjekt){
  106.     this->x-=desnoObjekt.x;
  107.     this->y-=desnoObjekt.y;
  108.     return *this;
  109.     }
  110.     // prefix ++
  111.     Tocka& operator++(){
  112.     this->x++;
  113.     this->y++;
  114.     return *this;
  115.     }
  116.     // prefix --
  117.     Tocka& operator--(){
  118.     this->x--;
  119.     this->y--;
  120.     return *this;
  121.     }
  122.     // postfix
  123.     Tocka& operator++(int){
  124.     Tocka nov(*this);
  125.     this->x++;
  126.     this->y++;
  127.     return nov;
  128.     }
  129.     //  
  130.     int& operator[] (int x) {
  131.          return a[x];
  132.     }
  133.     //objekt1=objekt2;
  134.     Tocka& operator=(Tocka &drugObjekt){
  135.     cout<<"Operator ="<<endl;
  136.     if(this!=&drugObjekt){
  137.     this->x=drugObjekt.x;
  138.     this->y=drugObjekt.y;
  139.     }
  140.     return *this;
  141.     }
  142.  
  143.     float rastojanieDoCentar(){
  144.     return sqrt(x*x+y*y);
  145.     }
  146.  
  147. };
  148.  
  149.  
  150. void najbliskuDoCentar(Tocka niza[],int n){
  151. float minimumDoCentar=999999;
  152. int pozicijaVoNiza;
  153. for(int i=0;i<n;i++){
  154.     if(niza[i].rastojanieDoCentar()<minimumDoCentar){
  155.         minimumDoCentar=niza[i].rastojanieDoCentar();
  156.         pozicijaVoNiza=i;
  157.     }
  158. }
  159. cout<<"Tockata shto e najblisku do centar e "<<niza[pozicijaVoNiza]<<" , oddalecena e od centarot "<<minimumDoCentar<<endl;
  160. }
  161.  
  162. void podalekuOdRastojanie(Tocka niza[],int n,float rastojanie){
  163. int brojac=0;
  164.     for(int i=0;i<n;i++){
  165.     if(niza[i].rastojanieDoCentar()>rastojanie){
  166.         brojac++;
  167.     }
  168.     }
  169. cout<<"Tocki poodaleceni od "<<rastojanie<<" se vkupno "<<brojac<<endl;
  170. }
  171.  
  172.  
  173. int main(){
  174. int n;
  175. cin>>n;
  176. Tocka niza[n];
  177. float rastojanie;
  178. cin>>rastojanie;
  179. for(int i=0;i<n;i++){
  180.     cin>>niza[i];
  181.     cout<<"Tockata "<<niza[i]<<" e oddalecena od centarot za ";
  182.     cout<<niza[i].rastojanieDoCentar()<<endl;
  183. }
  184. najbliskuDoCentar(niza,n);
  185. podalekuOdRastojanie(niza,n,rastojanie);
  186. /*
  187. Tocka prazenObjekt;
  188. Tocka prva(2,5);
  189. // copy constructor call
  190. Tocka vtora(prva);
  191. Tocka treta;
  192. treta = prva;
  193. cout<<treta;
  194. cout<<++treta;
  195. //cout<<treta++;
  196. cout<<treta;
  197.  
  198. Tocka treta;
  199. treta = prva + vtora;
  200. cout<<treta;
  201. Tocka cetvrta;
  202. */
  203.  
  204. return 0;
  205. }
Advertisement
Add Comment
Please, Sign In to add comment