Клас за работа с точки

Да се създаде клас за работа с точки от равнината, съдържащ методи за:

  1. Въвеждане координатите на точката от клавиатурата
  2. Извеждане на данните за точката на екрана
  3. Проверка дали точката е на оста X
  4. Проверка дали точката е на оста Y
  5. Проверка в кой квадрант е точката
  6. Проверка дали точката съвпада с друга точка

Да се направи програма, демонстрираща тези методи.

Публикувано в 12а с етикети . Постоянна връзка.

2 Responses to Клас за работа с точки

  1. Данаил каза:

    Ето го и решението на задачата:

    #include <iostream>
    
    using namespace std;
    
    // дефиниция на класа
    class Tochka                // заглавна част на дефиницията
    {                           // тяло на дефиницията
    public:                     // ниво на достъп до данните
        int x;                  // член данни
        int y;
        Tochka();               // конструктор по подразбиране
        Tochka(int x, int y);   // конструктор с параметри
        Tochka(const Tochka &t);// конструктор за копиране
        void vhod();            // мутатор
        void pechat() const;    // функция за достъп
        bool naX() const;       // проверка дали лежи на оста X
        bool naY() const;       // проверка дали лежи на оста Y
        int kvadrant() const;   // проверка в кой квадрант е
        bool savpada(const Tochka &t); // дали съвпада с друга точка
        ~Tochka();              // деструктор
    };
    
    Tochka::Tochka() {
        x=y=0;
    }
    
    Tochka::Tochka(int x, int y) {
        this->x=x;              // използване на this
        this->y=y;
    }
    
    Tochka::Tochka(const Tochka &t) {
        x=t.x;
        y=t.y;
    }
    
    Tochka::~Tochka() {
        cout<<"Razrushava ";
        pechat();
    }
    
    void Tochka::vhod() {
        cout<<"x=";
        cin>>x;
        cout<<"y=";
        cin>>y;
    }
    
    void Tochka::pechat() const {
        cout<<'('<<x<<','<<y<<')'<<endl;
    }
    
    bool Tochka::naX() const {
      return y==0;
    }
    
    bool Tochka::naY() const {
      return x==0;
    }
    
    int Tochka::kvadrant() const {
      if((x>0)&&(y>0))
        return 1;
      else if((x<0)&&(y>0))
        return 2;
      else if((x<0)&&(y<0))
        return 3;
      else if((x>0)&&(y<0))
        return 4;
      else 0;
    }
    
    bool Tochka::savpada(const Tochka &t) {
      return (x==t.x)&&(y==t.y);
    }
        
    int main()
    {
        Tochka a;                       // използва се конструктора по подразбиране
        Tochka b(10, 20);               // използва се конструктора с параметри
        cout<<"Danni za tochka a:\n";
        a.vhod();                       // извикване на метод мутатор за обекта
        Tochka *pc = new Tochka(a);     // динамична променлива, викаща конструктора за копиране
        pc->x = 0;                      // достъп до член-данна на обект, който е динамична променлива
        cout<<"Danni za tochka b:\n";
        cout<<'('<<b.x<<','<<b.y<<")\n";// достъп до член-данни на обект, който е статична променлива
        cout<<"Danni za tochka c:\n";
        pc->pechat();                   // извикване на метод за достъп на обекта
        if(a.naX())
          cout<<"Tochkata A e na osta X\n";
        if(b.naY())
          cout<<"Tochkata B e na osta Y\n"; 
        cout<<"Tochkata A se namira v "<<a.kvadrant()<<" kvadrant\n";
        if(b.savpada(a))
          cout<<"Tochkata B savpada s A\n";       
        delete pc;                      // извикване на деструктор за разрушаване на обекта
        system("pause");
        return 0;
    }
  2. Данаил каза:

    Ето и няколко примерни програми, използващи този клас:

    1. да се декларира точка A, да се въведат координатите й и да се отпечатат:

        Tochka A;
        cout<<"Vavedete koordinati"<<endl;
        A.vhod();
        cout<<"Koordinatite sa "<<endl;
        A.pechat();
    2. да се декларира точка B, да се укаже x=20 и y=-5 и да се отпечата в кой квадрант е точката:

        Tochka B;
        B.x=20;
        B.y=-5;
        cout<<"Tochkata se namira v kvadrabt "<<B.kvadrant()<<endl;
    3. да се декларира точка C с координати (-10,6) и да се отпечата x координатата и

        Tochka C(-10, 6);
        cout<< "X koordinata e:"<<C.x<<endl;
    4. да се декларира точка D c координати (10,-6) и точка E с координати като D и да се отпечата дали съвпадат:

        Tochka D ;
        D.x=10;
        D.y=-6;
        Tochka E(D);
        D.pechat() ;
        E.pechat ();   
    5. да се декларира точка F, да се въведат координатите й и да се отпечата дали лежи в центъра на координата система:

        Tochka F;
        F.vhod();
        if(F.x==0&&F.y==0)
         cout<< "Namira se v centara "<<endl;
        else
         cout<<" Ne se namira v centara "<<endl;
    6. да се декларира точка G c координати (0,-6) и да се отпечата дали лежи на оста X:

        Tochka G(0,-6);
        if (G.naX())
          cout<<"Leji na osta X. "<<endl;
        else cout<<"Ne leji na osta X."<<endl;

Вашият коментар