Created
January 30, 2021 00:30
-
-
Save M1nified/c702877f718e8970cab62e9e68bd2ea8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
class Pasazer | |
{ | |
private: | |
string imie; | |
string nazwisko; | |
int rok_urodzenia; | |
static int licznik; | |
public: | |
Pasazer() | |
{ | |
cout << "Konstruktor domyslny, Klasa: Pasazer" << endl; | |
licznik++; | |
cout << "Pasazer::licznik " << licznik << endl; | |
} | |
Pasazer(const Pasazer &obj) | |
{ | |
cout << "Konstruktor kopiujacy, Klasa: Pasazer" << endl; | |
imie = obj.imie; | |
nazwisko = obj.nazwisko; | |
rok_urodzenia = obj.rok_urodzenia; | |
licznik++; | |
cout << "Pasazer::licznik " << licznik << endl; | |
} | |
Pasazer(const Pasazer &obj, string _nazwisko) | |
{ | |
cout << "Konstruktor kopiujacy z nazwiskiem, Klasa: Pasazer" << endl; | |
imie = obj.imie; | |
nazwisko = _nazwisko; | |
rok_urodzenia = obj.rok_urodzenia; | |
licznik++; | |
cout << "Pasazer::licznik " << licznik << endl; | |
} | |
Pasazer(string _imie, string _nazwisko, int _rok_urodzenia) | |
{ | |
cout << "Konstruktor parametryzujacy, Klasa: Pasazer" << endl; | |
imie = _imie; | |
nazwisko = _nazwisko; | |
rok_urodzenia = _rok_urodzenia; | |
licznik++; | |
cout << "Pasazer::licznik " << licznik << endl; | |
} | |
~Pasazer() | |
{ | |
licznik--; | |
cout << "Destruktor, Klasa: Pasazer" << endl; | |
cout << "Pasazer::licznik " << licznik << endl; | |
} | |
string get_imie() | |
{ | |
return this->imie; | |
} | |
void set_imie(string _imie) | |
{ | |
imie = _imie; | |
} | |
string get_nazwisko() | |
{ | |
return this->nazwisko; | |
} | |
void set_nazwisko(string _nazwisko) | |
{ | |
nazwisko = _nazwisko; | |
} | |
int get_rok_urodzenia() | |
{ | |
return this->rok_urodzenia; | |
} | |
void set_rok_urodzenia(int _rok_urodzenia) | |
{ | |
rok_urodzenia = _rok_urodzenia; | |
} | |
void wypisz() | |
{ | |
cout << "Pasazer(" << imie << ", " << nazwisko << ", " << rok_urodzenia << ")" << endl; | |
} | |
friend void sortuj(Pasazer[], int); | |
}; | |
int Pasazer::licznik = 0; | |
void sortuj(Pasazer posortowana[], int rozmiar) | |
{ | |
Pasazer kopia[rozmiar]{}; | |
for (int i = 0; i < rozmiar; i++) | |
{ | |
kopia[i] = posortowana[i]; | |
} | |
int last_min = INT32_MIN; | |
for (int i = 0; i < rozmiar;) | |
{ | |
int next_min_rok = INT32_MAX; | |
for (int j = 0; j < rozmiar; j++) | |
{ | |
if (kopia[j].rok_urodzenia > last_min) | |
{ | |
next_min_rok = min(kopia[j].rok_urodzenia, next_min_rok); | |
} | |
} | |
cout << last_min << " " << next_min_rok << endl; | |
for (int j = 0; j < rozmiar; j++) | |
{ | |
if (kopia[j].rok_urodzenia == next_min_rok) | |
{ | |
posortowana[i++] = kopia[j]; | |
} | |
} | |
last_min = next_min_rok; | |
} | |
} | |
std::ostream &operator<<(std::ostream &os, Pasazer &pasazer) | |
{ | |
os << pasazer.get_imie() << " " << pasazer.get_nazwisko() << " " << pasazer.get_rok_urodzenia(); | |
return os; | |
} | |
class Autokar | |
{ | |
private: | |
string nazwa_autokaru; | |
string cel_podrozy; | |
double cena_biletu; | |
int limit_miejsc; | |
Pasazer *lista_pasazerow; | |
int liczba_pasazerow = 0; | |
public: | |
Autokar() | |
{ | |
cout << "Konstruktor domyslny, Klasa: Autokar" << endl; | |
} | |
Autokar(string _nazwa_autokaru, string _cel_podrozy, double _cena_biletu, int _limit_miejsc) | |
{ | |
cout << "Konstruktor parametryzujacy, Klasa: Autokar" << endl; | |
nazwa_autokaru = _nazwa_autokaru; | |
cel_podrozy = _cel_podrozy; | |
cena_biletu = _cena_biletu; | |
limit_miejsc = _limit_miejsc; | |
lista_pasazerow = new Pasazer[limit_miejsc]; | |
} | |
void dodaj_pasazera(const Pasazer pasazer) | |
{ | |
if (liczba_pasazerow == limit_miejsc) | |
{ | |
return; // bo nie mozna dodaj juz wiecej pasazerow | |
} | |
lista_pasazerow[liczba_pasazerow] = pasazer; | |
liczba_pasazerow++; | |
} | |
void operator++() // ++autokar | |
{ | |
cena_biletu += 1; | |
} | |
Autokar operator++(int) // autokar++ | |
{ | |
cena_biletu += 1; | |
return *this; | |
} | |
void wypisz() | |
{ | |
cout << "Autokar(" << nazwa_autokaru << ", " << cel_podrozy << ", " << cena_biletu << ", " << limit_miejsc << ", " << liczba_pasazerow << ")" << endl; | |
} | |
void wypisz_z_pasazerami() | |
{ | |
wypisz(); | |
cout << "Pasazerowie:" << endl; | |
for (int i = 0; i < liczba_pasazerow; i++) | |
{ | |
cout << lista_pasazerow[i] << endl; | |
} | |
} | |
void friend usun_pasazera_w_wozu(Pasazer, Autokar&); | |
}; | |
void usun_pasazera_w_wozu(Pasazer pasazer, Autokar &autokar) | |
{ | |
int index_pasazera; | |
for (index_pasazera = 0; index_pasazera < autokar.liczba_pasazerow && | |
(autokar.lista_pasazerow[index_pasazera].get_imie() != pasazer.get_imie() || | |
autokar.lista_pasazerow[index_pasazera].get_nazwisko() != pasazer.get_nazwisko() || | |
autokar.lista_pasazerow[index_pasazera].get_rok_urodzenia() != pasazer.get_rok_urodzenia()); | |
index_pasazera++) | |
; | |
if (index_pasazera >= autokar.liczba_pasazerow) | |
{ | |
return; // bo nie ma takiego pasazera w tym autobusie | |
} | |
for (int i = index_pasazera + 1; i < autokar.liczba_pasazerow; i++) | |
{ | |
autokar.lista_pasazerow[i - 1] = autokar.lista_pasazerow[i]; | |
} | |
autokar.liczba_pasazerow--; | |
} | |
int main() | |
{ | |
cout << endl | |
<< "a)" << endl; | |
Pasazer pasazer_1; | |
pasazer_1.wypisz(); | |
pasazer_1.set_imie("Pawel"); | |
pasazer_1.set_nazwisko("Ek"); | |
pasazer_1.set_rok_urodzenia(997); | |
cout << "pasazer_1: " << pasazer_1.get_imie() << ", " << pasazer_1.get_nazwisko() << ", " << pasazer_1.get_rok_urodzenia() << endl; | |
pasazer_1.wypisz(); | |
cout << endl | |
<< "b)" << endl; | |
Pasazer pasazer_2("Wojtus", "Smigly", 39); | |
pasazer_2.wypisz(); | |
cout << endl | |
<< "c)" << endl; | |
Pasazer pasazer_skopiowany(pasazer_1); | |
pasazer_skopiowany.wypisz(); | |
cout << endl | |
<< "d)" << endl; | |
Pasazer pasazer_skopiowany_nazwany(pasazer_1, "Skopiowany"); | |
pasazer_skopiowany_nazwany.wypisz(); | |
cout << endl | |
<< "e)" << endl; | |
int rozmiar = 4; | |
Pasazer *lista_pasazerow = new Pasazer[rozmiar]{{"Janek", "Zapalka", 84}, {"Janek", "Zapalka", 44}, {"Janek", "Zapalka", 104}, {"Janek", "Zapalka", 64}}; | |
lista_pasazerow[0].wypisz(); | |
lista_pasazerow[1].wypisz(); | |
lista_pasazerow[2].wypisz(); | |
lista_pasazerow[3].wypisz(); | |
cout << endl | |
<< "f)" << endl; | |
sortuj(lista_pasazerow, rozmiar); | |
for (int i = 0; i < rozmiar; i++) | |
{ | |
cout << lista_pasazerow[i] << endl; | |
} | |
cout << endl | |
<< "g)" << endl; | |
delete[] lista_pasazerow; | |
cout << endl | |
<< "h)" << endl; | |
Autokar autokar_1("Flix baus", "Kapsztad", 1499.99, 10); | |
autokar_1.wypisz(); | |
cout << endl | |
<< "i)" << endl; | |
autokar_1.wypisz(); | |
autokar_1++; | |
++autokar_1; | |
autokar_1.wypisz(); | |
cout << endl | |
<< "j)" << endl; | |
Pasazer *lista_pasazerow_2 = new Pasazer[rozmiar]{{"Janek", "Zapalka", 84}, {"Janek", "Zapalka", 44}, {"Janek", "Zapalka", 104}, {"Janek", "Zapalka", 64}}; | |
for (int i = 0; i < rozmiar; i++) | |
{ | |
autokar_1.dodaj_pasazera(lista_pasazerow_2[i]); | |
} | |
autokar_1.wypisz_z_pasazerami(); | |
cout << endl | |
<< "k)" << endl; | |
autokar_1.wypisz_z_pasazerami(); | |
usun_pasazera_w_wozu(lista_pasazerow_2[2], autokar_1); | |
autokar_1.wypisz_z_pasazerami(); | |
cout << endl | |
<< endl; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#define NOW 2020 | |
using namespace std; | |
class Osoba | |
{ | |
protected: | |
string imie; | |
string nazwisko; | |
int rok_urodzenia; | |
static int licznik; | |
public: | |
Osoba() | |
{ | |
licznik++; | |
cout << "Konstruktor domyslny, Klasa: Osoba" << endl; | |
cout << "Osoba::licznik " << licznik << endl; | |
} | |
Osoba(string _imie, string _nazwisko, int _rok_urodzenia) | |
{ | |
imie = _imie; | |
nazwisko = _nazwisko; | |
rok_urodzenia = _rok_urodzenia; | |
licznik++; | |
cout << "Konstruktor domyslny, Klasa: Osoba" << endl; | |
cout << "Osoba::licznik " << licznik << endl; | |
} | |
Osoba(Osoba &osoba) | |
{ | |
imie = osoba.imie; | |
nazwisko = osoba.nazwisko; | |
rok_urodzenia = osoba.rok_urodzenia; | |
licznik++; | |
cout << "Konstruktor kopiujacy, Klasa: Osoba" << endl; | |
cout << "Osoba::licznik " << licznik << endl; | |
} | |
~Osoba() | |
{ | |
licznik--; | |
cout << "Destruktor, Klasa: Osoba" << endl; | |
cout << "Osoba::licznik " << licznik << endl; | |
} | |
void wypisz() | |
{ | |
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << endl; | |
} | |
int wiek() | |
{ | |
return NOW - rok_urodzenia; | |
} | |
}; | |
int Osoba::licznik = 0; | |
class Pracownik : public Osoba | |
{ | |
protected: | |
string wojewodztwo; | |
static double placa_minimalna; | |
public: | |
Pracownik(string _imie, string _nazwisko, int _rok_urodzenia, string _wojewodztwo) : Osoba(_imie, _nazwisko, _rok_urodzenia) | |
{ | |
wojewodztwo = _wojewodztwo; | |
cout << "Konstruktor sparametryzowany, Klasa: Pracownik" << endl; | |
} | |
Pracownik(Pracownik &pracownik) : Osoba(pracownik) | |
{ | |
wojewodztwo = pracownik.wojewodztwo; | |
cout << "Konstruktor kopiujacy, Klasa: Pracownik" << endl; | |
} | |
~Pracownik() | |
{ | |
cout << "Destruktor, Klasa: Pracownik" << endl; | |
} | |
}; | |
double Pracownik::placa_minimalna = 2800; | |
class Informatyk : public Pracownik | |
{ | |
private: | |
string specjalizacja; | |
double mnoznik; | |
double pensja; | |
public: | |
Informatyk(string _imie, string _nazwisko, int _rok_urodzenia, string _wojewodztwo, string _specjalizacja, double _mnoznik) : Pracownik(_imie, _nazwisko, _rok_urodzenia, _wojewodztwo) | |
{ | |
specjalizacja = _specjalizacja; | |
mnoznik = _mnoznik; | |
pensja = 1.0 * mnoznik * Pracownik::placa_minimalna; | |
cout << "Konstruktor domyslny, Klasa: Informatyk" << endl; | |
} | |
Informatyk(Informatyk &informatyk, string _imie, string _nazwisko, int _rok_urodzenia) : Pracownik(_imie, _nazwisko, _rok_urodzenia, informatyk.wojewodztwo) | |
{ | |
specjalizacja = informatyk.specjalizacja; | |
mnoznik = informatyk.mnoznik; | |
pensja = informatyk.pensja; | |
cout << "Konstruktor kopiujacy z imie, nazwisko, rok_urodzenia, Klasa: Informatyk" << endl; | |
} | |
~Informatyk() | |
{ | |
cout << "Destruktor, Klasa: Informatyk" << endl; | |
} | |
void wypisz() | |
{ | |
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << ", " << wojewodztwo << ", " << specjalizacja << ", " << mnoznik << ", " << pensja << endl; | |
} | |
}; | |
class Emeryt : public Osoba | |
{ | |
private: | |
double emerytura; | |
public: | |
Emeryt() | |
{ | |
cout << "Konstruktor domyslny, Klasa: Emeryt" << endl; | |
} | |
Emeryt(Osoba osoba, double _emerytura) : Osoba(osoba) | |
{ | |
emerytura = _emerytura; | |
cout << "Konstruktor kopiujacy z Osoba + emerytura, Klasa: Emeryt" << endl; | |
} | |
~Emeryt() | |
{ | |
cout << "Destruktor, Klasa: Emeryt" << endl; | |
} | |
void wypisz() | |
{ | |
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << ", " << emerytura << endl; | |
} | |
}; | |
Emeryt *generuj_emerytow(Osoba osoby[], int &osoby_rozmiar, int &liczba_emerytow) | |
{ | |
liczba_emerytow = 0; | |
for (int i = 0; i < osoby_rozmiar; i++) | |
{ | |
if (osoby[i].wiek() > 65) | |
{ | |
liczba_emerytow++; | |
} | |
} | |
Emeryt *emeryci = new Emeryt[liczba_emerytow]; | |
int emeryci_index = 0; | |
for (int i = 0; i < osoby_rozmiar; i++) | |
{ | |
if (osoby[i].wiek() > 65) | |
{ | |
emeryci[emeryci_index++] = Emeryt(osoby[i], 24000); | |
copy(osoby + i + 1, osoby + osoby_rozmiar, osoby + i); | |
osoby_rozmiar--; | |
} | |
} | |
return emeryci; | |
} | |
int main() | |
{ | |
cout << endl | |
<< "a)" << endl; | |
Osoba osoba_1("Michal", "Piotrowski", 1990); | |
osoba_1.wypisz(); | |
cout << "osoba 1 wiek: " << osoba_1.wiek() << endl; | |
cout << endl | |
<< "b)" << endl; | |
Informatyk *informatyk = new Informatyk("Piotr", "Michalowski", 1991, "malopolskie", "skok o tyczce", 3.1); // dynamiczny | |
informatyk->wypisz(); | |
cout << endl | |
<< "c)" << endl; | |
Informatyk informatyk_2(*informatyk, "Pawel", "Malecki", 1945); | |
informatyk_2.wypisz(); | |
cout << "Informatyk 2 wiek: " << informatyk_2.wiek() << endl; | |
cout << endl | |
<< "d)" << endl; | |
int rozmiar = 3; | |
Osoba *osoby = new Osoba[rozmiar]; | |
osoby[0] = osoba_1; | |
osoby[1] = *informatyk; | |
osoby[2] = informatyk_2; | |
for (int i = 0; i < rozmiar; i++) | |
{ | |
osoby[i].wypisz(); | |
} | |
cout << endl | |
<< "e)" << endl; | |
int liczba_emerytow; | |
Emeryt *emeryci = generuj_emerytow(osoby, rozmiar, liczba_emerytow); | |
cout << "Emeryci " << liczba_emerytow << " :" << endl; | |
for (int i = 0; i < liczba_emerytow; i++) | |
{ | |
emeryci[i].wypisz(); | |
} | |
cout << "Osoby " << rozmiar << " :" << endl; | |
for (int i = 0; i < rozmiar; i++) | |
{ | |
osoby[i].wypisz(); | |
} | |
cout << endl | |
<< "f)" << endl; | |
delete informatyk; | |
delete[] osoby; | |
delete[] emeryci; | |
cout << endl | |
<< endl; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#define NOW 2020 | |
using namespace std; | |
class Osoba | |
{ | |
protected: | |
string imie; | |
string nazwisko; | |
int rok_urodzenia; | |
static int licznik; | |
public: | |
Osoba() | |
{ | |
licznik++; | |
cout << "Konstruktor domyslny, Klasa: Osoba" << endl; | |
cout << "Osoba::licznik " << licznik << endl; | |
} | |
Osoba(string _imie, string _nazwisko, int _rok_urodzenia) | |
{ | |
imie = _imie; | |
nazwisko = _nazwisko; | |
rok_urodzenia = _rok_urodzenia; | |
licznik++; | |
cout << "Konstruktor domyslny, Klasa: Osoba" << endl; | |
cout << "Osoba::licznik " << licznik << endl; | |
} | |
Osoba(Osoba &osoba) | |
{ | |
imie = osoba.imie; | |
nazwisko = osoba.nazwisko; | |
rok_urodzenia = osoba.rok_urodzenia; | |
licznik++; | |
cout << "Konstruktor kopiujacy, Klasa: Osoba" << endl; | |
cout << "Osoba::licznik " << licznik << endl; | |
} | |
~Osoba() | |
{ | |
licznik--; | |
cout << "Destruktor, Klasa: Osoba" << endl; | |
cout << "Osoba::licznik " << licznik << endl; | |
} | |
void wypisz() | |
{ | |
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << endl; | |
} | |
int wiek() | |
{ | |
return NOW - rok_urodzenia; | |
} | |
friend std::ostream &operator<<(std::ostream &os, Osoba &osoba); | |
}; | |
int Osoba::licznik = 0; | |
class Pracownik : public Osoba | |
{ | |
protected: | |
string wojewodztwo; | |
static double placa_minimalna; | |
public: | |
Pracownik(string _imie, string _nazwisko, int _rok_urodzenia, string _wojewodztwo) : Osoba(_imie, _nazwisko, _rok_urodzenia) | |
{ | |
wojewodztwo = _wojewodztwo; | |
cout << "Konstruktor sparametryzowany, Klasa: Pracownik" << endl; | |
} | |
Pracownik(Pracownik &pracownik) : Osoba(pracownik) | |
{ | |
wojewodztwo = pracownik.wojewodztwo; | |
cout << "Konstruktor kopiujacy, Klasa: Pracownik" << endl; | |
} | |
~Pracownik() | |
{ | |
cout << "Destruktor, Klasa: Pracownik" << endl; | |
} | |
}; | |
double Pracownik::placa_minimalna = 2800; | |
class Informatyk : public Pracownik | |
{ | |
private: | |
string specjalizacja; | |
double mnoznik; | |
double pensja; | |
public: | |
Informatyk(string _imie, string _nazwisko, int _rok_urodzenia, string _wojewodztwo, string _specjalizacja, double _mnoznik) : Pracownik(_imie, _nazwisko, _rok_urodzenia, _wojewodztwo) | |
{ | |
specjalizacja = _specjalizacja; | |
mnoznik = _mnoznik; | |
pensja = 1.0 * mnoznik * Pracownik::placa_minimalna; | |
cout << "Konstruktor domyslny, Klasa: Informatyk" << endl; | |
} | |
Informatyk(Informatyk &informatyk, string _imie, string _nazwisko, int _rok_urodzenia) : Pracownik(_imie, _nazwisko, _rok_urodzenia, informatyk.wojewodztwo) | |
{ | |
specjalizacja = informatyk.specjalizacja; | |
mnoznik = informatyk.mnoznik; | |
pensja = informatyk.pensja; | |
cout << "Konstruktor kopiujacy z imie, nazwisko, rok_urodzenia, Klasa: Informatyk" << endl; | |
} | |
~Informatyk() | |
{ | |
cout << "Destruktor, Klasa: Informatyk" << endl; | |
} | |
void wypisz() | |
{ | |
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << ", " << wojewodztwo << ", " << specjalizacja << ", " << mnoznik << ", " << pensja << endl; | |
} | |
}; | |
class Emeryt : public Osoba | |
{ | |
private: | |
double emerytura; | |
public: | |
Emeryt() | |
{ | |
cout << "Konstruktor domyslny, Klasa: Emeryt" << endl; | |
} | |
Emeryt(Osoba osoba, double _emerytura) : Osoba(osoba) | |
{ | |
emerytura = _emerytura; | |
cout << "Konstruktor kopiujacy z Osoba + emerytura, Klasa: Emeryt" << endl; | |
} | |
Emeryt(string _imie, string _nazwisko, int _rok_urodzenia, double _emerytura) : Osoba(_imie, _nazwisko, _rok_urodzenia) | |
{ | |
emerytura = _emerytura; | |
cout << "Konstruktor kopiujacy z Osoba + emerytura, Klasa: Emeryt" << endl; | |
} | |
~Emeryt() | |
{ | |
cout << "Destruktor, Klasa: Emeryt" << endl; | |
} | |
void wypisz() | |
{ | |
cout << imie << ", " << nazwisko << ", " << rok_urodzenia << ", " << emerytura << endl; | |
} | |
}; | |
Emeryt *generuj_emerytow(Osoba osoby[], int &osoby_rozmiar, int &liczba_emerytow) | |
{ | |
liczba_emerytow = 0; | |
for (int i = 0; i < osoby_rozmiar; i++) | |
{ | |
if (osoby[i].wiek() > 65) | |
{ | |
liczba_emerytow++; | |
} | |
} | |
Emeryt *emeryci = new Emeryt[liczba_emerytow]; | |
int emeryci_index = 0; | |
for (int i = 0; i < osoby_rozmiar; i++) | |
{ | |
if (osoby[i].wiek() > 65) | |
{ | |
emeryci[emeryci_index++] = Emeryt(osoby[i], 24000); | |
copy(osoby + i + 1, osoby + osoby_rozmiar, osoby + i); | |
osoby_rozmiar--; | |
} | |
} | |
return emeryci; | |
} | |
std::ostream &operator<<(std::ostream &os, Osoba &osoba) | |
{ | |
os << osoba.imie << " " << osoba.nazwisko << " " << osoba.rok_urodzenia; | |
return os; | |
} | |
int main() | |
{ | |
cout << endl | |
<< "a)" << endl; | |
Pracownik *pracownik = new Pracownik("Zbig", "Gniew", 1974, "malopolskie"); | |
Informatyk *informatyk = new Informatyk("Roman", "Pierce", 1980, "podkarpackie", "wysokie napiecia", 11.5); | |
Emeryt *emeryt = new Emeryt("Boleslaw", "Chrobry", 967, 50000); | |
pracownik->wypisz(); | |
informatyk->wypisz(); | |
emeryt->wypisz(); | |
cout << endl | |
<< "b)" << endl; | |
cout << "Pracownik wiek: " << pracownik->wiek() << endl; | |
cout << "Informatyk wiek: " << informatyk->wiek() << endl; | |
cout << "Emeryt wiek: " << emeryt->wiek() << endl; | |
cout << endl | |
<< "c)" << endl; | |
int rozmiar = 3; | |
Osoba osoby[rozmiar]; | |
osoby[0] = *pracownik; | |
osoby[1] = *informatyk; | |
osoby[2] = *emeryt; | |
for (int i = 0; i < rozmiar; i++) | |
{ | |
cout << osoby[i] << endl; | |
} | |
cout << endl | |
<< "d)" << endl; | |
delete pracownik; | |
delete informatyk; | |
delete emeryt; | |
cout << endl | |
<< endl; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
struct Film | |
{ | |
public: | |
string tytul_filmu; | |
string glowni_aktorzy[2]; | |
int rok_produkcji; | |
double czas_trwania; | |
void wypisz() | |
{ | |
cout << tytul_filmu << ", " << glowni_aktorzy[0] << ", " << glowni_aktorzy[1] << ", " << rok_produkcji << ", " << czas_trwania << endl; | |
} | |
}; | |
class Klient | |
{ | |
private: | |
string imie; | |
string nazwisko; | |
Film wypozyczone_filmy[3]; | |
int liczba_filmow_na_koncie = 0; | |
static int limit_wypozyczonych_filmow; | |
public: | |
Klient() | |
{ | |
cout << "Konstruktor domyslny, Klasa: Klient" << endl; | |
} | |
Klient(string _imie, string _nazwisko) | |
{ | |
imie = _imie; | |
nazwisko = _nazwisko; | |
cout << "Konstruktor domyslny, Klasa: Klient" << endl; | |
} | |
~Klient() | |
{ | |
cout << "Destruktor, Klasa: Klient" << endl; | |
} | |
void wypozycz_film(Film film) | |
{ | |
if (liczba_filmow_na_koncie < limit_wypozyczonych_filmow) | |
{ | |
wypozyczone_filmy[liczba_filmow_na_koncie++] = film; | |
} | |
} | |
void zwroc_film(Film film) | |
{ | |
for (int i = 0; i < liczba_filmow_na_koncie; i++) | |
{ | |
if (wypozyczone_filmy[i].tytul_filmu == film.tytul_filmu) | |
{ | |
copy(wypozyczone_filmy + i + 1, wypozyczone_filmy + liczba_filmow_na_koncie, wypozyczone_filmy + i); | |
liczba_filmow_na_koncie--; | |
break; | |
} | |
} | |
} | |
void wypisz() | |
{ | |
cout << imie << ", " << nazwisko << endl; | |
cout << "Wypozyczone filmy (" << liczba_filmow_na_koncie << "): " << endl; | |
for (int i = 0; i < liczba_filmow_na_koncie; i++) | |
{ | |
wypozyczone_filmy[i].wypisz(); | |
} | |
} | |
}; | |
int Klient::limit_wypozyczonych_filmow = 3; | |
int main() | |
{ | |
cout << endl | |
<< "a)" << endl; | |
Film film{"BB Mountain", {"Micelo Anhelllo", "Don Mazurrro"}, 1990, 1.5}; | |
film.wypisz(); | |
cout << endl | |
<< "b)" << endl; | |
string *tytul_filmu = &(film.tytul_filmu); | |
cout << "tytul filmu: " << *tytul_filmu << endl; | |
cout << endl | |
<< "c)" << endl; | |
int rozmiar = 3; | |
Film films[rozmiar]{{"Matrix Visa", {"Him", "Him"}, 1990, 1.5}, | |
{"Matrix Master Card", {"Him", "Her"}, 1991, 2.5}, | |
{"Matrix Revolut-ion", {"Her", "Her"}, 1992, 3.5}}; | |
for (int i = 0; i < rozmiar; i++) | |
{ | |
films[i].wypisz(); | |
} | |
cout << endl | |
<< "d)" << endl; | |
Klient klient("Mikolajek", "Bezbrodnicki"); | |
klient.wypisz(); | |
cout << endl | |
<< "e)" << endl; | |
klient.wypozycz_film(films[0]); | |
klient.wypozycz_film(films[2]); | |
klient.wypisz(); | |
cout << endl | |
<< "f)" << endl; | |
void (Klient::*zwroc_film_wsk)(Film film); | |
zwroc_film_wsk = &Klient::zwroc_film; | |
(klient.*zwroc_film_wsk)(films[0]); | |
klient.wypisz(); | |
cout << endl | |
<< endl; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment