Advertisement
Guest User

Shape

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