/* Zadanie: Napisz klase Figura, Trojkat i Pieciokat. * Klasa Figura jest klasa bazowa. Zawiera: * - chroniony vector typu double, do trzymania dlugosci bokow * - chronione pola 'obwod' i 'pole' typu double * - publiczna metode do obliczania obwodu figury, musi byc uniwersalna * - dla chetnych: publiczny destruktor, czyszczacy wektor z dlugosciami bokow * * Klasa Trojkat jest klasa pochodna klasy Figura i dziedziczy po niej w sposob publiczny. Zawiera: * - publiczna metode wpisujace dlugosci bokow trojkata, sprawdzajaca czy trojkat moze powstac! * - publiczna metode obliczajaca pole trojkata * * Klasa pieciokat jest pochodna klasy Figura i dziedziczy po niej w sposob chroniony.Zawiera: * - publiczna metode wpisujace dlugosci bokow pieciokata foremnego * - publiczne metody obliczajaca obwod i pole */ #include #include #include using namespace std; class Figura{ protected: vector boki; double obwod, pole; public: ~Figura(){ boki.clear(); } double Obwod(); }; double Figura::Obwod(){ obwod = 0; for(int i=0; ic) || !(a+c>b) || !(b+c>a) ) cerr << "Niepoprawne dlugosci bokow!" << endl; else{ boki.push_back(a); boki.push_back(b); boki.push_back(c); } } double Trojkat::Pole(){ if(boki.size() <= 0) cerr << "Nie podano dlugosci bokow!" << endl; else{ double p = Obwod() / 2.0; pole = sqrt( p*(p-boki.at(0))*(p-boki.at(1))*(p-boki.at(2)) ); return pole; } } class Pieciokat : protected Figura { private: public: void Wpisz_boki(double a); double Oblicz_obwod(); double Oblicz_pole(); }; void Pieciokat::Wpisz_boki(double a){ for(int i=0; i<5; i++) boki.push_back(a); } double Pieciokat::Oblicz_obwod(){ return Obwod(); } double Pieciokat::Oblicz_pole(){ pole = (boki.at(0)*boki.at(0)*sqrt(5*(5+2*sqrt(5))))/4.0; return pole; } int main(){ Trojkat ABC; ABC.Wpisz_boki(3,4,5); cout<<"Obwod: "<