definicja klasy kwadrat w c/c++

ewelisa
Użytkownik
Użytkownik
Posty: 6
Rejestracja: 29 maja 2009, o 19:03
Płeć: Kobieta

definicja klasy kwadrat w c/c++

Post autor: ewelisa »

bardzo proszę o pomoc
Mam do napisania program na zliczenie, a przyznam, że jestem kiepska w programowaniu Moje zadanie to:
Zdefiniuj klasę kwadrat wraz z funkcjami obsługującymi klasę i jej prostego zastosowania w programie (chodzi chyba o obliczenie pola, obwodu, przesunięcia kwadratu o wektor,... - sama do końca nie wiem )
byłabym wdzięczna za jakąkolwiek pomoc
Awatar użytkownika
Dedemonn
Użytkownik
Użytkownik
Posty: 689
Rejestracja: 21 lut 2007, o 19:40
Płeć: Mężczyzna
Lokalizacja: Z kompa
Podziękował: 26 razy
Pomógł: 137 razy

definicja klasy kwadrat w c/c++

Post autor: Dedemonn »

A na zajęciach przez cały semestr to się w kłejka pewnie grało, co?

Kod: Zaznacz cały

class Kwadrat
{
    private:
        double m_bok;

    public:
        Kwadrat(double dl)
        {
            m_bok = dl;
        }
        double obwod()
        {
            return 4 * m_bok;
        }
        double pole()
        {
            // bla bla
        }
}
BTW: Całkiem precyzyjne polecenie. (do tego nie po polsku) ;] Jeśli mają być przesunięcia o wektor, to trzeba już pamiętać pozycję każdego wierzchołka w ukł. współrzędnych.

I czy metoda 'Jabłko' jest metodą obsługującą klasę? :7
ewelisa
Użytkownik
Użytkownik
Posty: 6
Rejestracja: 29 maja 2009, o 19:03
Płeć: Kobieta

definicja klasy kwadrat w c/c++

Post autor: ewelisa »

dziękuję za pomoc
a wie może ktoś jak napisać tę klasę korzystając ze współrzędnych punktów (wierzchołków kwadratu) które mają być podane przez użytkownika?
adek05
Użytkownik
Użytkownik
Posty: 450
Rejestracja: 3 kwie 2007, o 18:38
Płeć: Mężczyzna
Lokalizacja: Biała Podlaska
Podziękował: 12 razy
Pomógł: 68 razy

definicja klasy kwadrat w c/c++

Post autor: adek05 »

Możesz zdefiniować sobie dodatkową klasę punkt, ale nie koniecznie. Ja bym to zrobił np. tak:

Kod: Zaznacz cały

class Kwadrat
{
private:
 double a1,a2,b1,b2,c1,c2,d1,d2;
public: 
 Kwadrat(double a1, double a2, double b1, double b2, double c1, double c2, double d1, double d2)
{ \inicjalizacja zmiennych}
double Obwod()
{ return 4* sqrt( (a1-b1)(a1-b1) + (a2 - b2)(a2 - b2) ) ;}
double Pole()
{ return (a1-b1)(a1-b1) + (a2 - b2)(a2 - b2);}
void Wektor(double x, double y)
{ a1 = a1 - x;
 a2 = a2 - y;
\itd. dla b, c, d}

};
Awatar użytkownika
Dedemonn
Użytkownik
Użytkownik
Posty: 689
Rejestracja: 21 lut 2007, o 19:40
Płeć: Mężczyzna
Lokalizacja: Z kompa
Podziękował: 26 razy
Pomógł: 137 razy

definicja klasy kwadrat w c/c++

Post autor: Dedemonn »

W obliczaniu pola coś się chyba nie zgadza. (wygląda mi to na długość jednego boku bez pierwiastka)

Jeśli mogę jeszcze wtrącić swoje 3 grosze, to w programowaniu obiektowym właśnie chodzi o to, aby tworzyć klasy, które mogą wyręczać inne klasy swoimi metodami. Tak też jest ładniej/lepiej/optymalniej/wyraźniej, i cokolwiek tam jeszcze, zdefiniować klasę Punkt wraz z takimi metodami jak obliczanie odległości od innego punktu. Wtedy w dowolnym innym miejscu w programie nie będziemy dublować kodu (i ponownie nad nim myśleć) odpowiedzialnego za powyższe operacje. ;]

Pozdrawiam.
ewelisa
Użytkownik
Użytkownik
Posty: 6
Rejestracja: 29 maja 2009, o 19:03
Płeć: Kobieta

definicja klasy kwadrat w c/c++

Post autor: ewelisa »

dziękuję za pomoc

jeszcze jedno pytanie, jak w kodzie dedemonna wyświetlić wynik dla np. obwodu kwadratu A, dla którego wczytano już długość boku?? mi czas wyskakuje 0.
Awatar użytkownika
Dedemonn
Użytkownik
Użytkownik
Posty: 689
Rejestracja: 21 lut 2007, o 19:40
Płeć: Mężczyzna
Lokalizacja: Z kompa
Podziękował: 26 razy
Pomógł: 137 razy

definicja klasy kwadrat w c/c++

Post autor: Dedemonn »

Kod: Zaznacz cały

Kwadrat *kw = new Kwadrat(4);
cout << kw->obwod();
Chyba jakoś tak to było w C++. ;|
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

definicja klasy kwadrat w c/c++

Post autor: kadiii »

Dedemonn pisze:

Kod: Zaznacz cały

Kwadrat *kw = new Kwadrat(4);
cout << kw->obwod();
Chyba jakoś tak to było w C++. ;|
Tak odwołujemy się do wskaźników w klasie. Do obiektów stałych bardziej zwyczajnie:

Kod: Zaznacz cały

cout << kw.obwod();
Pozdrawiam
Awatar użytkownika
Dedemonn
Użytkownik
Użytkownik
Posty: 689
Rejestracja: 21 lut 2007, o 19:40
Płeć: Mężczyzna
Lokalizacja: Z kompa
Podziękował: 26 razy
Pomógł: 137 razy

definicja klasy kwadrat w c/c++

Post autor: Dedemonn »

Coś kłamiesz. Tyle pamiętam zdaje się. Poprzez operator wyłuskania, znaczy kropeczkę, odwołujemy się do obiektów statycznych, tj. nie instancjowanych za pomocą operatora 'new'. Czy nie tak?

PS. Trzeba pamiętać jeszcze o zwolnieniu pamięci po pracy:

Kod: Zaznacz cały

Kwadrat *kw = new Kwadrat(4);
cout << kw->obwod();
delete kw;

Pzdr.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

definicja klasy kwadrat w c/c++

Post autor: kadiii »

Mea culpa. Najwyraźniej twoja pamięć ma się lepiej niż moja - nie ma to jak pozytywny wpływ nauki.
Pozdrawiam
P.S A, i oczywiście nie można zapomiec o nieocenionym wpływie programowania w javie .
ODPOWIEDZ