Point2d c++

Odpowiedz Nowy wątek
2018-01-04 21:17
chytant
0

Hobbistycznie próbuje coś skrobaćw c++ i zabrałem się za tzw. Point2D. Jak ten kod usprawnić ? Po części wiem, że jest on napisany fatalnie ale o tyle o ile działa.
Za pomoc serdecznie dziękuje.

#include <iostream>
#include <cmath>

using namespace std;

class Point2d
{
private:
       int x;
       int y;
public:
       int getX()
       {
           return x;
       }
       int getY()
       {
           return y;
       }

        Point2d(int a, int b)
       {
             x = a;
             y = b;
       }
};

double dod(Point2d p1, Point2d p2)
{
    return p1.getX()+p2.getX(),p1.getY()+p2.getY();
}

double odej(Point2d p1, Point2d p2)
{
    return p1.getX()-p2.getX(),p1.getY()-p2.getY();
}

double dzie(Point2d p1, Point2d p2)
{
    return p1.getX()/2,p1.getY()/2;
}

double mnoz(Point2d p1, Point2d p2)
{
    return p1.getX()*2,p1.getY()*2;
}

double wypisz(Point2d p1, Point2d p2)
{
    return p1.getX(), p1.getY();
}

double dst(Point2d p1, Point2d p2)
{
       return sqrt(pow((p2.getX()-p1.getX()),2)+pow((p2.getY()-p1.getY()),2));
}

int main()
{
    Point2d p1(10,10);
    Point2d p2(10,10);
    Point2d p3();

    cout<<"p3 = p1 + p2  "<<dod(p1,p2)<<","<<dod(p1,p2)<<endl;
    cout<<"p3 = p1 - p2  "<<odej(p1,p2)<<","<<odej(p1,p2)<<endl;
    cout<<"p3 = p1/2     "<<dzie(p1,p2)<<","<<dzie(p1,p2)<<endl;
    cout<<"p3 = p1*2     "<<mnoz(p1,p2)<<","<<mnoz(p1,p2)<<endl;
    cout<<"Wypisz =      "<<wypisz(p1,p2)<<","<<wypisz(p1,p2)<<endl;
    cout<<"Distance      "<<dst(p1,p2)<<endl;
    return 0;
}
edytowany 1x, ostatnio: cerrato, 2019-09-02 14:50

Pozostało 580 znaków

2019-09-02 16:23
1

W tym przypadku podejście z operatorami wydaje się być OK, ale zalecałbym ogólną ostrożność ;)
Nazwa funkcji często więcej mówi o jej działaniu niż symbol operatora. A "to przecież oczywiste" bywa oczywiste w różny sposób zależnie od osoby ;).

Mój ulubiony przykład:

// zwykły "matematyczny" wektor w przestrzeni 2D - w zasadzie niczym nie różniący się od punktu z tego wątku ;)
Wektor2D w1 (1,1), w2 (2, 3);    
...

auto v1 = w1 + w2;
auto v2 = w1 * w2;

Pytania

  • jakiego typu będą v1 i v2 ?
  • co będą zawierać ?
edytowany 1x, ostatnio: Bartłomiej Golenko, 2019-09-03 18:22
Wektor2D, 3,4; 2,3; - Krystian Zdziebło 2019-09-02 16:33
Nie, to zła odpowiedź, wynikająca z tego co Tobie wydaje się oczywiste... Hint: ile znasz różnych rodzajów iloczynów dla wektorów ? - Bartłomiej Golenko 2019-09-02 16:41
ja znam 4 rodzaje iloczynów wektorów: skalarny, wektorowy, kartezjański, krakowian. - MarekR22 2019-09-04 16:04
Zgadza sie... A jeśli potraktujesz wektor jako przypadek szczególny macierzy to robi się jeszcze weselej. Dlatego ja wolę zapis w stylu auto v3 = inner_product(w1, w2); - Bartłomiej Golenko 2019-09-04 17:26

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0