/* 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 * * Do klasy Trojkat z poprzedniego zadania dopisz klase Prostokatny - pochodna do dla klasy Trojkat. * W niej nalezy umiescic metode wpisujaca dlugosci bokow i sprawdzajaca czy trojkat moze byc prostokatny. */ #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; return 1; } else{ double p = Obwod() / 2.0; pole = sqrt( p*(p-boki.at(0))*(p-boki.at(1))*(p-boki.at(2)) ); return pole; } } class Prostokatny: public Trojkat{ public: void Wpisz_boki(double a, double b, double c); }; void Prostokatny::Wpisz_boki(double a, double b, double c){ if( !(a+b>c) || !(a+c>b) || !(b+c>a) ) cerr << "Niepoprawne dlugosci bokow!" << endl; else{ if( !(a>b && a>c && (b*b+c*c==a*a)) && !(b>a && b>c && (c*c+a*a==b*b)) && !(a*a+b*b==c*c) ) cerr << "To nie jest trojkoat prostokatny" << endl; else{ boki.push_back(a); boki.push_back(b); boki.push_back(c); } } } int main(){ Prostokatny ABC; ABC.Wpisz_boki(2,4,5); cout<<"Obwod: "<