poprawki w kodzie xdddxdd

This commit is contained in:
2026-05-05 19:22:09 +02:00
parent 0d5d9dc969
commit a3bd6af48a
3 changed files with 44 additions and 19 deletions

View File

@@ -32,10 +32,14 @@ class Biblioteka {
public: public:
Biblioteka(size_t size) : ksiazki(new Ksiazka[size]) {} Biblioteka(size_t size) : ksiazki(new Ksiazka[size]) {}
~Biblioteka() {
delete[] ksiazki;
ksiazki = nullptr;
}
void dodajKsiazke(Ksiazka k) { ksiazki[aktualna_ksiazka++] = k; } 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++) { for (int i = 0; i < aktualna_ksiazka; i++) {
if (ksiazki[i].tytul == tytul) { if (ksiazki[i].tytul == tytul) {
return &ksiazki[i]; return &ksiazki[i];
@@ -44,9 +48,9 @@ public:
return nullptr; return nullptr;
} }
void wypiszWszystkie() { void wypiszWszystkie() const {
for (int i = 0; i < aktualna_ksiazka; i++) { 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) {} Osoba(std::string imie) : imie(imie) {}
}; };
class Czytelnik : Osoba { // dziedziczenie class Czytelnik : public Osoba { // dziedziczenie
Ksiazka *ksiazki; // agregacja Ksiazka *ksiazki; // agregacja
const int max_ilosc; const int max_ilosc;
int aktualna_ilosc_ksiazek = 0; int aktualna_ilosc_ksiazek = 0;
public: public:
Czytelnik(std::string imie, size_t max_ilosc) Czytelnik(std::string imie, size_t max_ilosc)
: Osoba(imie), max_ilosc(max_ilosc), ksiazki(new Ksiazka[max_ilosc]) {} : Osoba(imie), max_ilosc(max_ilosc), ksiazki(new Ksiazka[max_ilosc]) {}
void wypozycz(Ksiazka ksiazka) { ~Czytelnik() {
if (aktualna_ilosc_ksiazek < max_ilosc) { delete[] ksiazki;
ksiazki[aktualna_ilosc_ksiazek++] = ksiazka; 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++) { for (int i = 0; i < aktualna_ilosc_ksiazek; i++) {
std::cout << ksiazki[i]; std::cout << ksiazki[i];
} }
@@ -80,13 +93,16 @@ public:
int main() { int main() {
Biblioteka b = Biblioteka(12); Biblioteka b = Biblioteka(12);
Ksiazka k1 = std::string tytul = "Ogniem i mieczem";
Ksiazka("Ogniem i Mieczem", "1920", Autor("Henryk", "Sienkiewicz")); Ksiazka k1 = Ksiazka(tytul, "1920", Autor("Henryk", "Sienkiewicz"));
b.dodajKsiazke(k1); b.dodajKsiazke(k1);
std::cout << "Książki biblioteki: "<< std::endl; std::cout << "===\n";
std::cout << "Książki biblioteki: " << std::endl;
b.wypiszWszystkie(); b.wypiszWszystkie();
Czytelnik czytelnik = Czytelnik("Bogdan", 8); Czytelnik czytelnik = Czytelnik("Bogdan", 8);
std::cout << "Książki czytelnika: "<< std::endl; std::cout << "===\n";
czytelnik.wypozycz(k1); std::cout << "Książki czytelnika: " << std::endl;
czytelnik.wypozycz(b, tytul);
czytelnik.wypozycz(b, "Hobbit");
czytelnik.wypiszWszystkie(); czytelnik.wypiszWszystkie();
} }

View File

@@ -11,7 +11,7 @@ public:
class Pochodna : public Bazowa { class Pochodna : public Bazowa {
public: public:
Pochodna(int val) : Bazowa(val) {} Pochodna(int val) : Bazowa(val) {}
void wypisz() { std::cout << x << std::endl; } void wypisz() const { std::cout << x << std::endl; }
}; };
int main() { int main() {

View File

@@ -29,11 +29,20 @@ public:
class Biblioteka { class Biblioteka {
Ksiazka *ksiazki; Ksiazka *ksiazki;
int aktualna_ksiazka = 0; int aktualna_ksiazka = 0;
int const max_Ksiazki;
public: 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) { Ksiazka *szukajPoTytule(std::string tytul) {
for (int i = 0; i < aktualna_ksiazka; i++) { for (int i = 0; i < aktualna_ksiazka; i++) {
@@ -46,7 +55,7 @@ public:
void wypiszWszystkie() { void wypiszWszystkie() {
for (int i = 0; i < aktualna_ksiazka; i++) { for (int i = 0; i < aktualna_ksiazka; i++) {
std::cout << ksiazki[i]; std::cout << ksiazki[i] << '\n';
} }
} }
}; };