#include <iostream>
#include<cmath>

class Krug{
    double poluprecnik;
     static constexpr double pi = 4 * atan(1);

    public: 
    explicit Krug (double poluprecnik) { Postavi(poluprecnik);};
    Krug &Postavi (double poluprecnik) {
        if(poluprecnik  <= 0) throw std::domain_error("Neispravan poluprecnik");
        Krug::poluprecnik = poluprecnik;
        return *this;
    }
    double DajPoluprecnik() const{ return poluprecnik; }
    double DajObim() const{ return 2 * pi * poluprecnik;}
    double DajPovrsinu() const { return poluprecnik * poluprecnik * pi; }
    Krug &Skaliraj(double faktor){
        if(faktor <= 0) throw std::domain_error("Neispravan faktor skaliranja");
        poluprecnik *= faktor;
        return *this;
    }
    void Ispisi() const {
        std::cout << "R=" << DajPoluprecnik() <<" O=" << DajObim() << " P=" << DajPovrsinu();
    }
        
};


class Valjak {
    Krug baza;
    double visina;

    void PostaviVisinu(double visina){
        if(visina <= 0) throw std::domain_error("Neispravna visina");
        Valjak::visina = visina;
    }

    public: 
    Valjak (const Krug &baza, double visina) : baza(baza) {PostaviVisinu(visina);}
    Valjak (double poluprecnik, double visina) : baza(poluprecnik) {PostaviVisinu(visina);}
    Valjak &Postavi(const Krug &baza, double visina){
        Valjak::baza = baza;
        PostaviVisinu(visina);
        return *this;
    }
    Valjak &Postavi(double poluprecnik, double visina){
        baza.Postavi(poluprecnik); 
        PostaviVisinu(visina);
        return *this;
    }

    Krug DajBazu() const {return baza;}
    double DajPoluprecnikBaze() const { return baza.DajPoluprecnik();}
    double DajVisinu() const {return visina;}
    double DajPovrsinu() const { return  2 * baza.DajPovrsinu() + baza.DajObim() * DajVisinu();}
    double DajZapreminu () const { return baza.DajPovrsinu() * visina; }
    Valjak &Skaliraj (double faktor) {
        baza.Skaliraj(faktor);
        return *this;
    }

    void Ispisi() const {
        std::cout << "R=" << DajPoluprecnikBaze() <<" O=" << DajVisinu() << " P=" << DajPovrsinu() <<" V=" << DajZapreminu();
    }
    
    
};





















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: