#include <iostream>

class Lik {

    public:
    virtual ~Lik () = default;
    virtual void IspisiSpecificnosti() const = 0;
    virtual double DajObim() const = 0;
    virtual double DajPovrsinu() const = 0;
    void Ispisi() const {

        IspisiSpecificnosti();
        std::cout<< "Obim: " << DajObim() <<" Povrsina: "<< DajPovrsinu()<< std::endl;
        
    }
    
};

class Krug : public Lik{
    double r;
    static constexpr double PI = 3.141592653589793;

    public:
    Krug (double r) : r(r) {
        if(r <= 0) throw std::domain_error("Neispravni parametri");
    }
    void IspisiSpecificnosti() const override{
        std::cout << "Krug poluprecnika " << r << std::endl;
    }
    double DajObim() const override {
        return 2*r*PI;
    }

    double DajPovrsinu() const override {
        return r*r*PI;
    }
    
};

class Pravougaonik : public Lik {
    double a, b;

    public:
    Pravougaonik(double a, double b) : a(a), b(b) {
        if(a <= 0 || b <= 0) throw std::domain_error("Neispravni parametri");
        
    }
    double DajObim() const override {
        return 2*a + 2*b;
        
    }

    double DajPovrsinu() const override{
        return a * b;
    }
};
















int main() {
    std::cout << "Hello world!" << std::endl;
    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: