Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class figura{
- protected:
- string *kolor;
- double liczba;
- public:
- figura():kolor(new string("Brak")),liczba(0){}
- figura(const string &kolo, const double &a):kolor(new string(kolo)),liczba(a){}
- virtual double pole() const = 0;
- virtual ostream &pokaz(ostream &out)const=0;
- friend ostream &operator<<(ostream &out, const figura &a){
- return a.pokaz(out);
- }
- };
- class kolo:public figura{
- public:
- kolo():figura(){}
- kolo(const string &kol, const double &a):figura(kol, a){}
- kolo (const kolo &a):figura(*a.kolor, a.liczba){}
- kolo &operator=(const kolo &a){
- if(this!=&a){
- kolor = new string(*a.kolor);
- liczba = a.liczba;
- }
- return *this;
- }
- ostream &pokaz(ostream &out)const{
- return out << *kolor << " " << liczba << endl;
- }
- double pole()const{
- return 3.14 * liczba;
- }
- };
- class prost:public figura{
- protected:
- double liczba2;
- public:
- prost():figura(),liczba2(0){}
- prost(const string &kol, const double &a, const double &a2):figura(kol, a),liczba2(a2){}
- prost(const prost &a):figura(*a.kolor, a.liczba),liczba2(a.liczba2){}
- prost &operator=(const prost &a){
- if(this!=&a){
- kolor = new string(*a.kolor);
- liczba = a.liczba;
- liczba2 = a.liczba2;
- }
- return *this;
- }
- ostream &pokaz(ostream &out)const{
- return out << *kolor << " " << liczba << " " << liczba2 << endl;
- }
- double pole()const{
- return liczba * liczba2;
- }
- };
- class prostop:public prost{
- protected:
- double liczba3;
- public:
- prostop():prost(), liczba3(0){}
- prostop(const string &kol, const double &a, const double &a2, const double &a3):prost(kol, a, a2),liczba3(a3){}
- prostop(const prostop &a):prost(*a.kolor, a.liczba, a.liczba2),liczba3(a.liczba3){}
- prostop &operator=(const prostop &a){
- if(this!=&a){
- kolor = new string(*a.kolor);
- liczba = a.liczba;
- liczba2 = a.liczba2;
- liczba3 = a.liczba3;
- }
- return *this;
- }
- ostream &pokaz(ostream &out)const{
- return out << *kolor << " " << liczba << " " << liczba2 << " " << liczba3 << endl;
- }
- double pole()const{
- return liczba * liczba2 * liczba3;
- }
- };
- int main(){
- figura *tab[5];
- const kolo test1("czarny",100);
- const prostop test2("szarny",2,2,2);
- tab[0]=new kolo("czerwony",1);
- tab[1]=new kolo;
- tab[2]=new prost("niebieski",1,1);
- tab[3]=new prostop("Zielony",1,1,1);
- tab[4]=new prostop;
- for(int i=0; i<5; ++i)
- cout << tab[i]->pole() << endl;
- cout << "********** 3 **********"<< endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement