Advertisement
KralMarko123

Shapes

May 2nd, 2019
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5.  
  6. //TODO: konstruiraj ja abstraknata klasa Shape
  7. class Shape{
  8. protected:
  9. int a;
  10. public:
  11. Shape(){}
  12. Shape(int a){
  13. this->a=a;
  14. }
  15. virtual double plostina() {}
  16. virtual void pecati() {}
  17. virtual int getType() {}
  18. };
  19. //TODO: konstruiraj ja klasata Kvadrat
  20. class Square : public Shape{
  21. public:
  22. Square(int a) : Shape(a){}
  23. double plostina(){
  24. return (double)a*a;
  25. }
  26. void pecati(){
  27. cout<<"Kvadrat so plostina = "<<plostina()<<endl;
  28. }
  29. int getType(){
  30. return 1;
  31. }
  32. };
  33. //TODO: konstruiraj ja klasata Krug
  34. class Krug : public Shape{
  35. public:
  36. Krug(int a) : Shape(a){}
  37. double plostina(){
  38. return 3.14 * a * a;
  39. }
  40. void pecati(){
  41. cout<<"Krug so plostina = "<<plostina()<<endl;
  42. }
  43. int getType(){
  44. return 2;
  45. }
  46. };
  47. //TODO: konstruiraj ja klasata Triagolnik
  48. class Triagolnik : public Shape{
  49. public:
  50. Triagolnik(int a) : Shape(a){}
  51. double plostina(){
  52. return (sqrt(3)/4) * (double)a * a;
  53. }
  54. void pecati(){
  55. cout<<"Triagolnik so plostina = "<<plostina()<<endl;
  56. }
  57. int getType(){
  58. return 3;
  59. }
  60. };
  61.  
  62. //TODO: definiraj go metodot void checkNumTypes(Shape** niza, int n)
  63. void checkNumTypes(Shape** niza, int n){
  64. int square=0, krug=0, triagolnik=0;
  65. for(int i=0;i<n;++i){
  66. if(niza[i]->getType()==1)
  67. square++;
  68. if(niza[i]->getType()==2)
  69. krug++;
  70. if(niza[i]->getType()==3)
  71. triagolnik++;
  72. }
  73. cout<<"Broj na kvadrati vo nizata = "<<square<<endl;
  74. cout<<"Broj na krugovi vo nizata = "<<krug<<endl;
  75. cout<<"Broj na triagolnici vo nizata = "<<triagolnik<<endl;
  76. }
  77.  
  78. int main(){
  79.  
  80.  
  81. int n;
  82. cin >> n;
  83.  
  84. //TODO: inicijaliziraj niza od pokazuvachi kon klasata Shape
  85. Shape **niza;
  86.  
  87.  
  88. //TODO: alociraj memorija so golemina n za prethodno navedenata niza
  89. niza=new Shape*[50];
  90.  
  91. int classType;
  92. int side;
  93.  
  94. //TODO: konstruiraj for ciklus so chija pomosh ke ja popolnish nizata
  95. for(int i = 0; i < n; ++i){
  96.  
  97. cin >> classType;
  98. cin >> side;
  99. if(classType==1)
  100. niza[i]=new Square(side);
  101. if(classType==2)
  102. niza[i]=new Krug(side);
  103. if(classType==3)
  104. niza[i]=new Triagolnik(side);
  105. }
  106.  
  107. for(int i = 0; i < n; ++i){
  108.  
  109. niza[i]->pecati();
  110. }
  111.  
  112. checkNumTypes(niza, n);
  113.  
  114. return 0;
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement