Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- //TODO: konstruiraj ja abstraknata klasa Shape
- class Shape{
- protected:
- int strana;
- public:
- Shape(){
- this->strana=0;
- }
- Shape(int strana){
- this->strana=strana;
- }
- virtual double plostina() = 0;
- virtual void pecati() = 0;
- virtual int getType() = 0;
- };
- //TODO: konstruiraj ja klasata Kvadrat
- class Square:public Shape{
- public:
- Square():Shape(){}
- Square(int strana):Shape(strana){}
- double plostina(){
- return strana*strana;
- }
- void pecati(){
- cout<<"Kvadrat so plostina = "<<plostina()<<endl;
- }
- int getType(){
- return 1;
- }
- };
- //TODO: konstruiraj ja klasata Krug
- class Circle:public Shape{
- public:
- Circle():Shape(){}
- Circle(int strana):Shape(strana){}
- double plostina(){
- return 3.14*strana*strana;
- }
- void pecati(){
- cout<<"Krug so plostina = "<<plostina()<<endl;
- }
- int getType(){
- return 2;
- }
- };
- //TODO: konstruiraj ja klasata Triagolnik
- class Triangle:public Shape{
- public:
- Triangle():Shape(){}
- Triangle(int strana):Shape(strana){}
- double plostina(){
- return (sqrt(3)/4) * strana * strana;
- }
- void pecati(){
- cout<<"Triagolnik so plostina = "<<plostina()<<endl;
- }
- int getType(){
- return 3;
- }
- };
- //TODO: definiraj go metodot void checkNumTypes(Shape** niza, int n)
- void checkNumTypes(Shape** niza, int n){
- int s,c,t;
- s=c=t=0;
- for(int i=0;i<n;i++){
- if((niza[i]->getType())==1){
- s++;
- }
- else if((niza[i]->getType())==2){
- c++;
- }
- else if((niza[i]->getType())==3){
- t++;
- }
- }
- cout<<"Broj na kvadrati vo nizata = "<<s<<endl;
- cout<<"Broj na krugovi vo nizata = "<<c<<endl;
- cout<<"Broj na triagolnici vo nizata = "<<t<<endl;
- }
- int main(){
- int n;
- cin >> n;
- //TODO: inicijaliziraj niza od pokazuvachi kon klasata Shape
- Shape**niza;
- //TODO: alociraj memorija so golemina n za prethodno navedenata niza
- niza=new Shape*[n];
- int classType;
- int side;
- //TODO: konstruiraj for ciklus so chija pomosh ke ja popolnish nizata
- for(int i = 0; i < n; ++i){
- cin >> classType;
- cin >> side;
- if(classType==1){
- niza[i]=new Square(side);
- }
- else if(classType==2){
- niza[i]=new Circle (side);
- }
- else if(classType==3){
- niza[i]=new Triangle (side);
- }
- }
- for(int i = 0; i < n; ++i){
- niza[i]->pecati();
- }
- checkNumTypes(niza, n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement