From a3bd6af48adeabece6a88fbc2fa26b7afa55aa72 Mon Sep 17 00:00:00 2001 From: Szymon P Date: Tue, 5 May 2026 19:22:09 +0200 Subject: [PATCH] poprawki w kodzie xdddxdd --- .../programowanie/laby/lab9/zad10.cpp | 46 +++++++++++++------ .../programowanie/laby/lab9/zad8.cpp | 2 +- .../programowanie/laby/lab9/zad9.cpp | 15 ++++-- 3 files changed, 44 insertions(+), 19 deletions(-) diff --git a/uczelnia/2_semestr/programowanie/laby/lab9/zad10.cpp b/uczelnia/2_semestr/programowanie/laby/lab9/zad10.cpp index 7d372e8..e038dfb 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab9/zad10.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab9/zad10.cpp @@ -32,10 +32,14 @@ class Biblioteka { public: Biblioteka(size_t size) : ksiazki(new Ksiazka[size]) {} + ~Biblioteka() { + delete[] ksiazki; + ksiazki = nullptr; + } void dodajKsiazke(Ksiazka k) { ksiazki[aktualna_ksiazka++] = k; } - Ksiazka *szukajPoTytule(std::string tytul) { + Ksiazka *szukajPoTytule(std::string tytul) const { for (int i = 0; i < aktualna_ksiazka; i++) { if (ksiazki[i].tytul == tytul) { return &ksiazki[i]; @@ -44,9 +48,9 @@ public: return nullptr; } - void wypiszWszystkie() { + void wypiszWszystkie() const { for (int i = 0; i < aktualna_ksiazka; i++) { - std::cout << ksiazki[i]; + std::cout << ksiazki[i] << '\n'; } } }; @@ -58,20 +62,29 @@ public: Osoba(std::string imie) : imie(imie) {} }; -class Czytelnik : Osoba { // dziedziczenie - Ksiazka *ksiazki; // agregacja +class Czytelnik : public Osoba { // dziedziczenie + Ksiazka *ksiazki; // agregacja const int max_ilosc; int aktualna_ilosc_ksiazek = 0; public: Czytelnik(std::string imie, size_t max_ilosc) : Osoba(imie), max_ilosc(max_ilosc), ksiazki(new Ksiazka[max_ilosc]) {} - void wypozycz(Ksiazka ksiazka) { - if (aktualna_ilosc_ksiazek < max_ilosc) { - ksiazki[aktualna_ilosc_ksiazek++] = ksiazka; - } + ~Czytelnik() { + delete[] ksiazki; + ksiazki = nullptr; } - void wypiszWszystkie() { + + void wypozycz(Biblioteka &biblioteka, std::string tytul) { + Ksiazka *ksiazka = biblioteka.szukajPoTytule(tytul); + if (!ksiazka) { + std::cout << "Nie znaleziono książki pt." << tytul << " w bibliotece!" + << std::endl; + return; + } + ksiazki[aktualna_ilosc_ksiazek++] = *ksiazka; + } + void wypiszWszystkie() const { for (int i = 0; i < aktualna_ilosc_ksiazek; i++) { std::cout << ksiazki[i]; } @@ -80,13 +93,16 @@ public: int main() { Biblioteka b = Biblioteka(12); - Ksiazka k1 = - Ksiazka("Ogniem i Mieczem", "1920", Autor("Henryk", "Sienkiewicz")); + std::string tytul = "Ogniem i mieczem"; + Ksiazka k1 = Ksiazka(tytul, "1920", Autor("Henryk", "Sienkiewicz")); b.dodajKsiazke(k1); - std::cout << "Książki biblioteki: "<< std::endl; + std::cout << "===\n"; + std::cout << "Książki biblioteki: " << std::endl; b.wypiszWszystkie(); Czytelnik czytelnik = Czytelnik("Bogdan", 8); - std::cout << "Książki czytelnika: "<< std::endl; - czytelnik.wypozycz(k1); + std::cout << "===\n"; + std::cout << "Książki czytelnika: " << std::endl; + czytelnik.wypozycz(b, tytul); + czytelnik.wypozycz(b, "Hobbit"); czytelnik.wypiszWszystkie(); } diff --git a/uczelnia/2_semestr/programowanie/laby/lab9/zad8.cpp b/uczelnia/2_semestr/programowanie/laby/lab9/zad8.cpp index d491386..9835b81 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab9/zad8.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab9/zad8.cpp @@ -11,7 +11,7 @@ public: class Pochodna : public Bazowa { public: Pochodna(int val) : Bazowa(val) {} - void wypisz() { std::cout << x << std::endl; } + void wypisz() const { std::cout << x << std::endl; } }; int main() { diff --git a/uczelnia/2_semestr/programowanie/laby/lab9/zad9.cpp b/uczelnia/2_semestr/programowanie/laby/lab9/zad9.cpp index f1d4ff7..374edca 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab9/zad9.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab9/zad9.cpp @@ -29,11 +29,20 @@ public: class Biblioteka { Ksiazka *ksiazki; int aktualna_ksiazka = 0; + int const max_Ksiazki; public: - Biblioteka(size_t size) : ksiazki(new Ksiazka[size]) {} + Biblioteka(size_t size) : ksiazki(new Ksiazka[size]), max_Ksiazki(size) {} + ~Biblioteka() { + delete[] ksiazki; + ksiazki = nullptr; + } - void dodajKsiazke(Ksiazka k) { ksiazki[aktualna_ksiazka++] = k; } + void dodajKsiazke(Ksiazka k) { + if (aktualna_ksiazka < max_Ksiazki) { + ksiazki[aktualna_ksiazka++] = k; + } + } Ksiazka *szukajPoTytule(std::string tytul) { for (int i = 0; i < aktualna_ksiazka; i++) { @@ -46,7 +55,7 @@ public: void wypiszWszystkie() { for (int i = 0; i < aktualna_ksiazka; i++) { - std::cout << ksiazki[i]; + std::cout << ksiazki[i] << '\n'; } } };