Advertisement
nex036ara

figura

Apr 18th, 2012
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.01 KB | None | 0 0
  1. //kreirati apstraktnu klasu figura, i iz nje izvesti klase trougao i pravougaonik
  2. //iz trougla izvesti jednakostranicni, iz pravougaonika kvadrat
  3.  
  4. #ifndef FIGURA_DEF
  5. #define FIGURA_DEF
  6. #include <math.h>
  7. #include <iostream>
  8. using namespace std;
  9.  
  10. class Figura{
  11.     private:
  12.         static int count;
  13.         static int id;
  14.     public:
  15.         Figura() {count++;}
  16.         ~Figura(){count--;}
  17.         virtual double getO()const = 0;
  18.         virtual double getP()const = 0;
  19.         virtual int getId()const {return id;}
  20.         virtual int getCount()const {return count;}
  21. };
  22.  
  23. class Trougao: public Figura {
  24.     private:
  25.         static int count;
  26.         static int id;
  27.         double a,b,c;
  28.     public:
  29.         Trougao() {a=3; b=4; c=5; count++;}
  30.         Trougao(double aa=3,double bb=4, double cc=5) {a=aa;b=bb;c=cc; count++;}
  31.         Trougao(const Trougao &tr) {a=tr.a; b=tr.b; c=tr.c; count++;}
  32.         ~Trougao(){count--;}
  33.         double getA()const {return a;}
  34.         double getB()const {return b;}
  35.         double getC()const {return c;}
  36.         int getId()const {return id;}
  37.         int getCount()const {return count;}
  38.         double getO()const{return a+b+c;}
  39.         double getP()const{double s=(a+b+c)/2; return sqrt(s* (s-a)*(s-b)*(s-c) );}
  40. };
  41.  
  42. class Jednakostranicni: public Trougao{
  43.     private:
  44.         static int count;
  45.         static int id;
  46.     public:
  47.         Jednakostranicni(): Trougao(1,1,1) {count++;}
  48.         Jednakostranicni(double aa=3): Trougao(aa,aa,aa) {count++;}
  49.         Jednakostranicni(const Jednakostranicni &jst): Trougao((Trougao)jst) {count++;}
  50.         ~Jednakostranicni(){count--;}
  51.         int getId()const {return id;}
  52.         int getCount()const {return count;}
  53. };
  54.  
  55. class Pravougaonik: public Figura{
  56.         private:
  57.             static int count;
  58.             static int id;
  59.             double a,b;
  60.         public:
  61.             Pravougaonik() {a=4; b=5; count++;}
  62.             Pravougaonik(double aa=4, double bb=5) {a=aa; b=bb; count++;}
  63.             Pravougaonik(const Pravougaonik &pr) {a=pr.a; b=pr.b; count++;}
  64.             ~Pravougaonik() {count--;}
  65.             int getId()const {return id;}
  66.             int getCount()const {return count;}
  67.             double getA()const {return a;}
  68.             double getB()const {return b;}
  69.             double getO()const {return 2*(a+b);}
  70.             double getP()const {return a*b;}
  71. };
  72.  
  73. class Kvadrat: public Pravougaonik{
  74.     private:
  75.         static int id;
  76.         static int count;
  77.     public:
  78.         Kvadrat(): Pravougaonik(2,2) {count++;}
  79.         Kvadrat(double aa=1): Pravougaonik(aa,aa) {count++;}
  80.         Kvadrat(const Kvadrat &kv): Pravougaonik((Pravougaonik)kv) {count++;}
  81.         ~Kvadrat(){count--;}
  82.         int getId()const {return id;}
  83.         int getCount()const {return count;}
  84.  
  85.  
  86. };
  87. #endif
  88.  
  89. #include "figura.hpp"
  90.  
  91. int Figura:: count=0;
  92. int Figura:: id=0;
  93. int Trougao:: count=0;
  94. int Trougao:: id=1;
  95. int Pravougaonik:: count=0;
  96. int Pravougaonik:: id=2;
  97. int Jednakostranicni:: count=0;
  98. int Jednakostranicni:: id=3;
  99. int Kvadrat:: count=0;
  100. int Kvadrat:: id=4;
  101.  
  102. //kreirati apstraktnu klasu figura, i iz nje izvesti klase trougao i pravougaonik
  103. //iz trougla izvesti jednakostranicni, iz pravougaonika kvadrat
  104.  
  105. #include "figura.hpp"
  106.  
  107. void printResult(const Figura &fig) {
  108.     cout<<"Figura je: ";
  109.     switch(fig.getId()) {
  110.     case 0: cout<<"Figura!"<<endl; break;
  111.     case 1: cout<<"Trougao!"<<endl; break;
  112.     case 2: cout<<"Pravougaonik!"<<endl; break;
  113.     case 3: cout<<"Jednakostranicni trougao!"<<endl; break;
  114.     case 4:cout<<"Kvadrat!"<<endl; break;
  115. }
  116.  
  117.     cout<<"Obim: "<<fig.getO()<<endl;
  118.     cout<<"Povrsina: "<< fig.getP()<<endl;
  119.     cout<<"Broj aktuelnih objekata je "<<fig.getCount()<<". "<<endl;
  120. }
  121.  
  122.  
  123.  
  124. int main(){
  125. Trougao tr(3,4,5);
  126. Pravougaonik pr1(4,5), pr2(10,15);
  127. Jednakostranicni jdn1(6), jdn2(8);
  128. Kvadrat kv1(10), kv2(8);
  129.  
  130. printResult(tr);
  131. printResult(pr1);
  132. printResult(pr2);
  133. printResult(jdn1);
  134. printResult(jdn2);
  135. printResult(kv1);
  136. printResult(kv2);
  137.  
  138. return 0;
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement