From 2b9fa6f3add0dbc077ffbb765457903fb752639d Mon Sep 17 00:00:00 2001 From: Szymon P Date: Tue, 12 May 2026 17:09:25 +0200 Subject: [PATCH] prawie gotowe xdd --- .../programowanie/laby/lab10/out/zad10 | Bin 0 -> 29592 bytes .../programowanie/laby/lab10/zad10.cpp | 123 ++++++++++++++++++ .../programowanie/laby/lab10/zad9.cpp | 21 +-- 3 files changed, 134 insertions(+), 10 deletions(-) create mode 100755 uczelnia/2_semestr/programowanie/laby/lab10/out/zad10 diff --git a/uczelnia/2_semestr/programowanie/laby/lab10/out/zad10 b/uczelnia/2_semestr/programowanie/laby/lab10/out/zad10 new file mode 100755 index 0000000000000000000000000000000000000000..3e511f659726f72b5fbe20a11644e519b3b39a5f GIT binary patch literal 29592 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 literal 0 HcmV?d00001 diff --git a/uczelnia/2_semestr/programowanie/laby/lab10/zad10.cpp b/uczelnia/2_semestr/programowanie/laby/lab10/zad10.cpp index e69de29..6a39b0c 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab10/zad10.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab10/zad10.cpp @@ -0,0 +1,123 @@ +#include +#include +#include +#include +#include +#include + +class Adres { + std::string ulica; + int nr_mieszkania; + +public: + Adres(std::string ulica, int nr_mieszkania) + : ulica(ulica), nr_mieszkania(nr_mieszkania) {} + + friend std::ostream &operator<<(std::ostream &os, const Adres &adres) { + os << adres.ulica << " mieszkania " << adres.nr_mieszkania; + return os; + } + + friend std::ostream &operator<<(std::ostream &os, Adres &adres) { + os << adres.ulica << " mieszkania " << adres.nr_mieszkania; + return os; + } +}; + +class Pracownik { +protected: + std::string imie; + float pensja; + std::unique_ptr adres; + +public: + virtual float obliczWyplate() = 0; + Pracownik(std::string imie, float pensja, std::unique_ptr adres) + : imie(imie), pensja(pensja), adres(std::move(adres)) {} + virtual ~Pracownik() = default; + friend std::ostream &operator<<(std::ostream &os, Pracownik &p) { + os << p.imie << " zarabia " << p.obliczWyplate() << " i mieszka na " + << *(p.adres); + return os; + } +}; + +class PracownikEtatowy : public Pracownik { + +public: + PracownikEtatowy(std::string imie, float pensja, std::unique_ptr adres) + : Pracownik(imie, pensja, std::move(adres)) {} + + float obliczWyplate() override { return pensja; } +}; + +class Zleceniobiorca : public Pracownik { + float godziny; + +public: + Zleceniobiorca(std::string imie, float pensja, std::unique_ptr adres, + float godziny) + : Pracownik(imie, pensja, std::move(adres)), godziny(godziny) {} + float obliczWyplate() override { return pensja * godziny; } +}; + +class Dzial { + std::vector> pracownicy; + +public: + Dzial() {}; + + void dodajPracownika(std::shared_ptr pracownik) { + pracownicy.push_back(pracownik); + } + + float sumaWyplat() const { + float sum = 0; + for (auto &pracownik : pracownicy) { + sum += pracownik->obliczWyplate(); + } + return sum; + } + + void wypiszPracownikow() const { + std::cout << "=== Wszyscy pracownicy ===\n"; + for (const auto &pracownik : pracownicy) { + std::cout << *pracownik << std::endl; + } + } +}; + +class Kierownik : public PracownikEtatowy { + std::vector> podwladni; + +public: + Kierownik(std::string imie, float pensja, std::unique_ptr adres) + : PracownikEtatowy(imie, pensja, std::move(adres)) {} + + float obliczWyplate() override { return pensja; } + + float sumaWyplatZespolu() { + float sum = 0; + for (auto &pracownik : podwladni) { + sum += pracownik->obliczWyplate(); + } + return sum; + } + + void dodajPracownika(std::shared_ptr p) { podwladni.push_back(p); } +}; + +int main() { + Kierownik kierownik = Kierownik( + "Stasiek", 238943, std::make_unique("Wojska polskiego", 23)); + + kierownik.dodajPracownika(std::make_shared( + "Bożena", 2500, std::make_unique("Żołnierska", 18))); + + kierownik.dodajPracownika(std::make_shared( + "Adam", 6700, std::make_unique("Wiejska", 1), 30)); + + std::cout << "Pracownicy sumarycznie zarabiają: " + << kierownik.sumaWyplatZespolu(); + return 0; +} diff --git a/uczelnia/2_semestr/programowanie/laby/lab10/zad9.cpp b/uczelnia/2_semestr/programowanie/laby/lab10/zad9.cpp index b335108..3d3b305 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab10/zad9.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab10/zad9.cpp @@ -23,12 +23,12 @@ class Pracownik { protected: std::string imie; float pensja; - Adres *adres; + std::unique_ptr adres; public: virtual float obliczWyplate() = 0; - Pracownik(std::string imie, float pensja, Adres *adres) - : imie(imie), pensja(pensja), adres(adres) {} + Pracownik(std::string imie, float pensja, std::unique_ptr adres) + : imie(imie), pensja(pensja), adres(std::move(adres)) {} virtual ~Pracownik() = default; friend std::ostream &operator<<(std::ostream &os, Pracownik &p) { os << p.imie << " zarabia " << p.obliczWyplate() << " i mieszka na " @@ -40,8 +40,8 @@ public: class PracownikEtatowy : public Pracownik { public: - PracownikEtatowy(std::string imie, float pensja, Adres *adres) - : Pracownik(imie, pensja, adres) {} + PracownikEtatowy(std::string imie, float pensja, std::unique_ptr adres) + : Pracownik(imie, pensja, std::move(adres)) {} float obliczWyplate() override { return pensja; } }; @@ -50,8 +50,9 @@ class Zleceniobiorca : public Pracownik { float godziny; public: - Zleceniobiorca(std::string imie, float pensja, Adres *adres, float godziny) - : Pracownik(imie, pensja, adres), godziny(godziny) {} + Zleceniobiorca(std::string imie, float pensja, std::unique_ptr adres, + float godziny) + : Pracownik(imie, pensja, std::move(adres)), godziny(godziny) {} float obliczWyplate() override { return pensja * godziny; } }; @@ -73,7 +74,7 @@ public: return sum; } - void wypiszPracownikow() { + void wypiszPracownikow() const { std::cout << "=== Wszyscy pracownicy ===\n"; for (const auto &pracownik : pracownicy) { std::cout << *pracownik << std::endl; @@ -84,10 +85,10 @@ public: int main() { Dzial dzial = Dzial(); dzial.dodajPracownika(std::make_unique( - "Bożena", 2500, new Adres("Żołnierska", 18))); + "Bożena", 2500, std::make_unique("Żołnierska", 18))); dzial.dodajPracownika(std::make_unique( - "Adam", 6700, new Adres("Wiejska", 1), 30)); + "Adam", 6700, std::make_unique("Wiejska", 1), 30)); dzial.wypiszPracownikow(); std::cout << "Pracownicy sumarycznie zarabiają: " << dzial.sumaWyplat();