Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //kreirati apstraktnu klasu figura, i iz nje izvesti klase trougao i pravougaonik
- //iz trougla izvesti jednakostranicni, iz pravougaonika kvadrat
- #ifndef FIGURA_DEF
- #define FIGURA_DEF
- #include <math.h>
- #include <iostream>
- using namespace std;
- class Figura{
- private:
- static int count;
- static int id;
- public:
- Figura() {count++;}
- ~Figura(){count--;}
- virtual double getO()const = 0;
- virtual double getP()const = 0;
- virtual int getId()const {return id;}
- virtual int getCount()const {return count;}
- };
- class Trougao: public Figura {
- private:
- static int count;
- static int id;
- double a,b,c;
- public:
- Trougao() {a=3; b=4; c=5; count++;}
- Trougao(double aa=3,double bb=4, double cc=5) {a=aa;b=bb;c=cc; count++;}
- Trougao(const Trougao &tr) {a=tr.a; b=tr.b; c=tr.c; count++;}
- ~Trougao(){count--;}
- double getA()const {return a;}
- double getB()const {return b;}
- double getC()const {return c;}
- int getId()const {return id;}
- int getCount()const {return count;}
- double getO()const{return a+b+c;}
- double getP()const{double s=(a+b+c)/2; return sqrt(s* (s-a)*(s-b)*(s-c) );}
- };
- class Jednakostranicni: public Trougao{
- private:
- static int count;
- static int id;
- public:
- Jednakostranicni(): Trougao(1,1,1) {count++;}
- Jednakostranicni(double aa=3): Trougao(aa,aa,aa) {count++;}
- Jednakostranicni(const Jednakostranicni &jst): Trougao((Trougao)jst) {count++;}
- ~Jednakostranicni(){count--;}
- int getId()const {return id;}
- int getCount()const {return count;}
- };
- class Pravougaonik: public Figura{
- private:
- static int count;
- static int id;
- double a,b;
- public:
- Pravougaonik() {a=4; b=5; count++;}
- Pravougaonik(double aa=4, double bb=5) {a=aa; b=bb; count++;}
- Pravougaonik(const Pravougaonik &pr) {a=pr.a; b=pr.b; count++;}
- ~Pravougaonik() {count--;}
- int getId()const {return id;}
- int getCount()const {return count;}
- double getA()const {return a;}
- double getB()const {return b;}
- double getO()const {return 2*(a+b);}
- double getP()const {return a*b;}
- };
- class Kvadrat: public Pravougaonik{
- private:
- static int id;
- static int count;
- public:
- Kvadrat(): Pravougaonik(2,2) {count++;}
- Kvadrat(double aa=1): Pravougaonik(aa,aa) {count++;}
- Kvadrat(const Kvadrat &kv): Pravougaonik((Pravougaonik)kv) {count++;}
- ~Kvadrat(){count--;}
- int getId()const {return id;}
- int getCount()const {return count;}
- };
- #endif
- #include "figura.hpp"
- int Figura:: count=0;
- int Figura:: id=0;
- int Trougao:: count=0;
- int Trougao:: id=1;
- int Pravougaonik:: count=0;
- int Pravougaonik:: id=2;
- int Jednakostranicni:: count=0;
- int Jednakostranicni:: id=3;
- int Kvadrat:: count=0;
- int Kvadrat:: id=4;
- //kreirati apstraktnu klasu figura, i iz nje izvesti klase trougao i pravougaonik
- //iz trougla izvesti jednakostranicni, iz pravougaonika kvadrat
- #include "figura.hpp"
- void printResult(const Figura &fig) {
- cout<<"Figura je: ";
- switch(fig.getId()) {
- case 0: cout<<"Figura!"<<endl; break;
- case 1: cout<<"Trougao!"<<endl; break;
- case 2: cout<<"Pravougaonik!"<<endl; break;
- case 3: cout<<"Jednakostranicni trougao!"<<endl; break;
- case 4:cout<<"Kvadrat!"<<endl; break;
- }
- cout<<"Obim: "<<fig.getO()<<endl;
- cout<<"Povrsina: "<< fig.getP()<<endl;
- cout<<"Broj aktuelnih objekata je "<<fig.getCount()<<". "<<endl;
- }
- int main(){
- Trougao tr(3,4,5);
- Pravougaonik pr1(4,5), pr2(10,15);
- Jednakostranicni jdn1(6), jdn2(8);
- Kvadrat kv1(10), kv2(8);
- printResult(tr);
- printResult(pr1);
- printResult(pr2);
- printResult(jdn1);
- printResult(jdn2);
- printResult(kv1);
- printResult(kv2);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement