Pole prostokąta w geometrii analitycznej

0

Witam,

Napisałem metodę do obliczenia pola prostokąta. Jednak nie jest napisana tak, jak trzeba.
Mam problem z parametrami metody. Nie mam pomysłu, jak to napisać.


class Prostokat
{
private:
    double przekatnaAx; 
    double przekatnaAy;
    double przekatnaDx;
    double przekatnaDy;

public:
   // metoda oblicza pole prostokata
    double PoleProstokata(double dlugoscBokuA, double dlugoscBokuB) 
    {
        dlugoscBokuA = sqrt( (przekatnaDx - przekatnaAx) * (przekatnaDx - przekatnaAx) + 
                            (przekatnaAy - przekatnaAy) * (przekatnaAy - przekatnaAy) );
        dlugoscBokuB = sqrt( (przekatnaDy - przekatnaAy) * (przekatnaDy - przekatnaAy) + 
                            (przekatnaAx - przekatnaAy) * (przekatnaAx - przekatnaAy) );
        return dlugoscBokuA * dlugoscBokuB; 
    }
};
0

Jeżeli to jest dalszy ciąg poprzedniego zadania, to

class Prostokat
{
private:
    double przekatnaAx; 
    double przekatnaAy;
    double przekatnaDx;
    double przekatnaDy;

public:
   // metoda oblicza pole prostokata
    double PoleProstokata() 
    {
        return (przekatnaDy-przekatnaAy) * (przekatnaDx-przekatnaAx); 
    }
};
0

Metoda PoleProstokata() zwraca mi -15 pole. Dopisałem metodę na obwód ObwodProstokata()
Czy może trzeba poprawić metodę PoleProsotkata() tak:


class Prostokat
{
private:
    double przekatnaAx; 
    double przekatnaAy;
    double przekatnaDx;
    double przekatnaDy;
public:
    // metoda oblicza pole prostokata
    double PoleProstokata() 
    {
        return abs((przekatnaDy-przekatnaAy) * (przekatnaDx-przekatnaAx)); 
    }

    // metoda obliczajaca obwod prostokata
    double ObwodProstokata()
    {
        return 2 * abs(przekatnaDx-przekatnaAx) + 2 * abs(przekatnaDy-przekatnaAy);
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    Prostokat prostokat;
    prostokat.Ustaw1(2, -8, 7, -11);
    prostokat.PoleProstokata();
    cout << prostokat.PoleProstokata() << endl;
    prostokat.ObwodProstokata();
    cout << prostokat.ObwodProstokata() << endl;
    system("pause");
    return 0;
}
0

Pisałem wzór przy założeniu, że A to lewy górny wierzchołek, a D to prawy dolny. Jak widać może być odwrotnie. Wtedy trzeba użyć funkcji abs().

0

Metoda ObwodProstokata zwraca wynik 16.

0

Taki właśnie jest obwód tego ([2,-8],[7,-11]) prostokąta. Boki mają długości 5 i 3.

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