﻿
#include <iostream>
#include<corecrt_math_defines.h>   //M_PI
using namespace std;

class Figura {
public:
    string nazwa;
    double pole;
    double obwod;   
    // konstruktor z wartościami domyslnymi oraz listą inicjalizacyjną
    Figura(string n, double p, double o) : nazwa(n), pole(p), obwod(o) {};
    void toString() { cout << "figura:\t"<< nazwa << endl << " pole:\t" << pole << endl << " obwod:\t" << obwod << endl; };
};


class Kwadrat : public Figura {
public:
    double bok;
    // konstruktor z wartościami domyslnymi oraz listą inicjalizacyjną, 
    // tworzymy tu również obiekt klasy Figura (wywołujemy konstruktor klasy Figura)
    Kwadrat(string n, double b, double p = 0.0, double o = 0.0) : Figura(n, p, o), bok(b) {
        pole = bok * bok;
        obwod = 4 * bok;
    };
};

class Kolo : public Figura {
public:
    double promien;
    // konstruktor z wartościami domyslnymi oraz listąinicjalizacyjną, 
    // tworzymy tu również obiekt klasy Figura (wywołujemy konstruktor klasy Figura)
    Kolo(string n, double pr, double p = 0.0, double o = 0.0) :Figura(n, p, o), promien(pr) {
        pole = M_PI * promien * promien;
        obwod = 2 * M_PI * promien;
    };   
};

int main()
{
    Kwadrat kwadrat("kwadrat",5);
    kwadrat.toString();
    Kolo kolo("kolo", 1);
    kolo.toString();
}


