Witam mam problem z kodem. Nie chodzi mi byście za mnie to zrobili tylko odpowiedzieli na 3 pytania bo nie wiem jak to ruszyc. (pytania na dole)
Musze sobie stworzyc klase wielobok ktora ma odwzorowywać wieloboczną figurę geometryczną na płaszczyźnie opisaną
zbiorem punktów. Klasa powinna dostarczać konstruktor domyślny oraz konstruktor umozliwiający utworzenie
zbioru punktów opisujących tę figurę.
Klasa punkt dziala bez problemu.
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
class punkt {
double x_, y_; //pola skladowe
public:
punkt (): x_(0),y_(0){}
punkt (double a1, double a2): x_(a1), y_(a2){}
double & x() {return x_;}
double & y() {return y_;}
const double & x() const {return x_;}
const double & y() const {return y_;}
double odleglosc (const punkt& r) const {return sqrt((x_-r.x_)*(x_-r.x_)+(y_-r.y_)*(y_-r.y_));}
};
class wielobok {
unsigned rozmiar;
punkt* wsk;
public:
wielobok ():rozmiar(0), wsk(0) {}
wielobok (const punkt* b, const punkt *e):rozmiar (e-b), wsk (rozmiar? new punkt [rozmiar]:0){
for (unsigned i=0, i<rozmiar, i++)
{
wsk[i]=b[i];
} //punkt* to typ
};
int main ()
{
punkt p(2,3);
cout << p.x() << ' ' << p.y() << '\n';
p.x()=1; //bezposredni dostep do x
p.y()=1;
cout << p.x() << ' ' << p.y() << '\n';
cout << p.odleglosc (punkt()) << '\n';;
punkt t[] = {punkt (0,1), punkt (0,0), punkt (1,0), punkt (1,1)};
wielobok w1(t,t+4);
system("pause");
return 0;
}
1.Klase wielobok kolega mi przeslal (komp mi padl na zajeciach )
Wiem ze cos na wzor tego co mi znajomy przeslal mialo byc. Niestety kompletnie nie rozumiem listy inicjalizujacej do drugiego konstruktora w klasie wielobok :rozmiar (e-b), wsk (rozmiar? new punkt [rozmiar]:0) w szczegolnosci tego co zaczyna sie od wsk (rozmiar? new punkt [rozmiar]:0 domyslam sie ze cos mialo byc zwiazane z przydzieleniem dynamicznie pamieci.
2.O co chodzi z tym wsk[i]=b[i];. (domyslam sie zeby przekopiowac tablice do nowej) ale tutaj wsk to tylko wskaznik a nie tablica wskaznikow mogaca pokazac na obiekty typu punkt. Czyli ten zapis powinnien byc zly , bo najzwyczajniej nie ma tutaj miejsca by to przekopiowac?
3.W mainie natomiast nie rozumiem tego zapisu wielobok w1(t,t+4); Czy w tej linijce konstruktor inicjalizowany jest tymi elemtami tablicy t[0] i t[3] ? Czy elementami tablicy od [0] do [3] ?? (przeciez wielobok to beda jakies 4 pkty na plaszczyznie a nie dwa)