[ ID411 @ 14.11.2009. 12:53 ] @
Kreiram 2 klase: Tacka i Poligon. U klasu Poligon potrebno je unositi vrhove tipa Tacka (konstruktor), unijeti sve vrhove i ispisati sve vrhove i izracunati obim. Posto nemam mnogo iskustva sa klasama (ucim ih) potreban mi je savjet kako napraviti funkcije koje ce to realizovati.

Code:

class Tacka{
      public: 
              Tacka(double=0, double=0);
              void setX();
              void setY();
              void readTacka();
              double getX();
              double getY();
              void printTacka();
      private:
              double x,y;
};


f-je ove klase sam napravio i sve rade ali za klasu:

Code:

class Poligon{
      public:
             Poligon();
             void read();
             void print();
             double obim();
      private:
              Tacka vrh[10];
};

ne mogu da napravim nista. Moja ideja je da objekte vrh unosim kao elemente niza, ali ne mogu da ih povezem sa objektima Tacka. Moze li neko da me uputi kako da napravim read(), tj. na koji nacin da se unose vrhovi poligona.

Goran: Koristi code tagove

[Ovu poruku je menjao Goran Arandjelovic dana 14.11.2009. u 15:58 GMT+1]
[ Goran Arandjelovic @ 14.11.2009. 14:53 ] @
Uvek idi korak po korak, raščlani problem i lako ćeš doći do rešenja...

U tvom slučaju:

- Imaš klase Tačka i Poligon (najbolje je da funkcije za unos ne budu članice tih klasa već van njih)

Code:

class Tacka
{
    public:
        Tacka(double x_arg = 0, double y_arg = 0);
        void SetX(double x_arg);
        void SetY(double y_arg);
        double GetX();
        double GetY();
    private:
        double x, y;
};

class Poligon
{
    public:
        Poligon(Tacka niz[], int broj_tacaka);
        void PostaviTacke(Tacka niz[], int broj_tacaka);
        double Obim();
    private:
        Tacka vrh[10];
        int broj_tacaka;
};

int UnesiTacke(Tacka niz[], int max_broj_tacaka)
{
    // Obavi ovde unos tacaka...
    // Maksimalno mozes da uneses max_broj_tacaka
    // Povratna vrednost moze da bude broj tacaka koji si zaista uneo

    int broj_unetih_tacaka = 0;
    double x = 0, y = 0;

    do{
        cout << "Koliko tacaka zelis da uneses: ";
        cin >> broj_unetih_tacaka;
    }while(broj_unetih_tacaka > max_broj_tacaka);

    for(int i = 0; i < broj_unetih_tacaka; ++i)
    {
        cout << "Unesi x koordinatu " << i+1 << ". tacke: ";
        cin >> x;
        cout << "Unesi y koordinatu " << i+1 << ". tacke: ";
        cin >> y;
        
        niz[i].SetX(x);
        niz[i].SetY(y);
    }

    return(broj_unetih_tacaka);
}

int main()
{
    Tacka niz_tacaka[10];
    int broj_unetih_tacaka = 0;
    Poligon p;

    broj_unetih_tacaka = UnesiTacke(niz_tacaka, 10);
    p.PostaviTacke(niz_tacaka, broj_unetih_tacaka);

    cout << "Obim poligona je: " << p.Obim() << endl;

    system("pause");
    return(0);
}


Ostalo je valjda jasno kako da napišeš... sam ćeš već da izračunaš obim i sve što ti treba za to... Naravno, klase Tacka i Poligon nisu potpune, ali sasvim dovoljne za ovaj primer.