#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
class Sprzet {
private:
int identyfikator;
string typ;
public:
Sprzet(int id, string t) : identyfikator(id), typ(t) {}
int pobierzIdentyfikator() const { return identyfikator; }
string pobierzTyp() const { return typ; }
};
class Osoba {
private:
int identyfikator;
string nazwisko;
int wiek;
public:
Osoba(int id, string n, int w) : identyfikator(id), nazwisko(n), wiek(w) {}
int pobierzIdentyfikator() const { return identyfikator; }
string pobierzNazwisko() const { return nazwisko; }
int pobierzWiek() const { return wiek; }
};
class Wypozyczenie {
private:
int id_sprzetu;
int id_osoby;
public:
Wypozyczenie(int id_s, int id_o) : id_sprzetu(id_s), id_osoby(id_o) {}
int pobierzIdSprzetu() const { return id_sprzetu; }
int pobierzIdOsoby() const { return id_osoby; }
};
void zapisz_do_pliku(const vector<Sprzet>& sprzety, const vector<Osoba>& osoby, const vector<Wypozyczenie>& wypozyczenia) {
ofstream plik_sprzet("sprzet.txt");
ofstream plik_osoba("osoba.txt");
ofstream plik_wypozyczenie("wypozyczenie.txt");
for (const auto& sprzet : sprzety)
plik_sprzet << sprzet.pobierzIdentyfikator() << " " << sprzet.pobierzTyp() << endl;
for (const auto& osoba : osoby)
plik_osoba << osoba.pobierzIdentyfikator() << " " << osoba.pobierzNazwisko() << " " << osoba.pobierzWiek() << endl;
for (const auto& wypozyczenie : wypozyczenia)
plik_wypozyczenie << wypozyczenie.pobierzIdSprzetu() << " " << wypozyczenie.pobierzIdOsoby() << endl;
plik_sprzet.close();
plik_osoba.close();
plik_wypozyczenie.close();
}
void odczytaj_z_pliku(vector<Sprzet>& sprzety, vector<Osoba>& osoby, vector<Wypozyczenie>& wypozyczenia) {
ifstream plik_sprzet("sprzet.txt");
ifstream plik_osoba("osoba.txt");
ifstream plik_wypozyczenie("wypozyczenie.txt");
int id;
string typ;
while (plik_sprzet >> id >> typ)
sprzety.push_back(Sprzet(id, typ));
string nazwisko;
int wiek;
while (plik_osoba >> id >> nazwisko >> wiek)
osoby.push_back(Osoba(id, nazwisko, wiek));
int id_s, id_o;
while (plik_wypozyczenie >> id_s >> id_o)
wypozyczenia.push_back(Wypozyczenie(id_s, id_o));
plik_sprzet.close();
plik_osoba.close();
plik_wypozyczenie.close();
}
vector<Osoba> osoby_wiek_powyzszy_25_wypozyczajace_hulajnoge(const vector<Osoba>& osoby, const vector<Wypozyczenie>& wypozyczenia) {
vector<Osoba> wynik;
for (const auto& wypozyczenie : wypozyczenia) {
for (const auto& osoba : osoby) {
if (wypozyczenie.pobierzIdOsoby() == osoba.pobierzIdentyfikator() && osoba.pobierzWiek() > 25) {
// Sprawdzamy typ wypożyczonego sprzętu
// Zakładamy, że id hulajnogi to np. 2
if (wypozyczenie.pobierzIdSprzetu() == 2) {
wynik.push_back(osoba);
break;
}
}
}
}
return wynik;
}
int liczba_wypozyczonych_rowerow(const vector<Sprzet>& sprzety, const vector<Wypozyczenie>& wypozyczenia) {
int licznik = 0;
for (const auto& wypozyczenie : wypozyczenia) {
for (const auto& sprzet : sprzety) {
if (wypozyczenie.pobierzIdSprzetu() == sprzet.pobierzIdentyfikator() && sprzet.pobierzTyp() == "rower") {
licznik++;
break;
}
}
}
return licznik;
}
int main() {
// Inicjalizacja danych
vector<Sprzet> sprzety = {Sprzet(1, "rower"), Sprzet(2, "hulajnoga"), Sprzet(3, "rolki")};
vector<Osoba> osoby = {Osoba(1, "Kowalski", 30), Osoba(2, "Nowak", 40), Osoba(3, "Wiśniewski", 20), Osoba(4, "Kowalczyk", 26)};
vector<Wypozyczenie> wypozyczenia = {Wypozyczenie(1, 2), Wypozyczenie(3, 4), Wypozyczenie(2, 1), Wypozyczenie(2, 2)};
// Zapis do plików
zapisz_do_pliku(sprzety, osoby, wypozyczenia);
// Odczyt z plików
vector<Sprzet> sprzety2;
vector<Osoba> osoby2;
vector<Wypozyczenie> wypozyczenia2;
odczytaj_z_pliku(sprzety2, osoby2, wypozyczenia2);
// Lista osób powyżej 25 lat wypożyczających hulajnogę
cout << "Osoby powyżej 25 lat wypożyczające hulajnogę:" << endl;
vector<Osoba> wynik = osoby_wiek_powyzszy_25_wypozyczajace_hulajnoge(osoby2, wypozyczenia2);
for (const auto& osoba : wynik) {
cout << osoba.pobierzNazwisko() << " (" << osoba.pobierzWiek() << " ";
}
// Liczba wypożyczonych rowerów
cout << "Liczba wypożyczonych rowerów: " << liczba_wypozyczonych_rowerow(sprzety2, wypozyczenia2) << endl;
return 0;
}