fork download
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. class Sprzet {
  9. private:
  10. int identyfikator;
  11. string typ;
  12. public:
  13. Sprzet(int id, string t) : identyfikator(id), typ(t) {}
  14. int pobierzIdentyfikator() const { return identyfikator; }
  15. string pobierzTyp() const { return typ; }
  16. };
  17.  
  18. class Osoba {
  19. private:
  20. int identyfikator;
  21. string nazwisko;
  22. int wiek;
  23. public:
  24. Osoba(int id, string n, int w) : identyfikator(id), nazwisko(n), wiek(w) {}
  25. int pobierzIdentyfikator() const { return identyfikator; }
  26. string pobierzNazwisko() const { return nazwisko; }
  27. int pobierzWiek() const { return wiek; }
  28. };
  29.  
  30. class Wypozyczenie {
  31. private:
  32. int id_sprzetu;
  33. int id_osoby;
  34. public:
  35. Wypozyczenie(int id_s, int id_o) : id_sprzetu(id_s), id_osoby(id_o) {}
  36. int pobierzIdSprzetu() const { return id_sprzetu; }
  37. int pobierzIdOsoby() const { return id_osoby; }
  38. };
  39.  
  40. void zapisz_do_pliku(const vector<Sprzet>& sprzety, const vector<Osoba>& osoby, const vector<Wypozyczenie>& wypozyczenia) {
  41. ofstream plik_sprzet("sprzet.txt");
  42. ofstream plik_osoba("osoba.txt");
  43. ofstream plik_wypozyczenie("wypozyczenie.txt");
  44.  
  45. for (const auto& sprzet : sprzety)
  46. plik_sprzet << sprzet.pobierzIdentyfikator() << " " << sprzet.pobierzTyp() << endl;
  47. for (const auto& osoba : osoby)
  48. plik_osoba << osoba.pobierzIdentyfikator() << " " << osoba.pobierzNazwisko() << " " << osoba.pobierzWiek() << endl;
  49. for (const auto& wypozyczenie : wypozyczenia)
  50. plik_wypozyczenie << wypozyczenie.pobierzIdSprzetu() << " " << wypozyczenie.pobierzIdOsoby() << endl;
  51.  
  52. plik_sprzet.close();
  53. plik_osoba.close();
  54. plik_wypozyczenie.close();
  55. }
  56.  
  57. void odczytaj_z_pliku(vector<Sprzet>& sprzety, vector<Osoba>& osoby, vector<Wypozyczenie>& wypozyczenia) {
  58. ifstream plik_sprzet("sprzet.txt");
  59. ifstream plik_osoba("osoba.txt");
  60. ifstream plik_wypozyczenie("wypozyczenie.txt");
  61.  
  62. int id;
  63. string typ;
  64. while (plik_sprzet >> id >> typ)
  65. sprzety.push_back(Sprzet(id, typ));
  66.  
  67. string nazwisko;
  68. int wiek;
  69. while (plik_osoba >> id >> nazwisko >> wiek)
  70. osoby.push_back(Osoba(id, nazwisko, wiek));
  71.  
  72. int id_s, id_o;
  73. while (plik_wypozyczenie >> id_s >> id_o)
  74. wypozyczenia.push_back(Wypozyczenie(id_s, id_o));
  75.  
  76. plik_sprzet.close();
  77. plik_osoba.close();
  78. plik_wypozyczenie.close();
  79. }
  80.  
  81. vector<Osoba> osoby_wiek_powyzszy_25_wypozyczajace_hulajnoge(const vector<Osoba>& osoby, const vector<Wypozyczenie>& wypozyczenia) {
  82. vector<Osoba> wynik;
  83. for (const auto& wypozyczenie : wypozyczenia) {
  84. for (const auto& osoba : osoby) {
  85. if (wypozyczenie.pobierzIdOsoby() == osoba.pobierzIdentyfikator() && osoba.pobierzWiek() > 25) {
  86. // Sprawdzamy typ wypożyczonego sprzętu
  87. // Zakładamy, że id hulajnogi to np. 2
  88. if (wypozyczenie.pobierzIdSprzetu() == 2) {
  89. wynik.push_back(osoba);
  90. break;
  91. }
  92. }
  93. }
  94. }
  95. return wynik;
  96. }
  97.  
  98. int liczba_wypozyczonych_rowerow(const vector<Sprzet>& sprzety, const vector<Wypozyczenie>& wypozyczenia) {
  99. int licznik = 0;
  100. for (const auto& wypozyczenie : wypozyczenia) {
  101. for (const auto& sprzet : sprzety) {
  102. if (wypozyczenie.pobierzIdSprzetu() == sprzet.pobierzIdentyfikator() && sprzet.pobierzTyp() == "rower") {
  103. licznik++;
  104. break;
  105. }
  106. }
  107. }
  108. return licznik;
  109. }
  110.  
  111. int main() {
  112. // Inicjalizacja danych
  113. vector<Sprzet> sprzety = {Sprzet(1, "rower"), Sprzet(2, "hulajnoga"), Sprzet(3, "rolki")};
  114. vector<Osoba> osoby = {Osoba(1, "Kowalski", 30), Osoba(2, "Nowak", 40), Osoba(3, "Wiśniewski", 20), Osoba(4, "Kowalczyk", 26)};
  115. vector<Wypozyczenie> wypozyczenia = {Wypozyczenie(1, 2), Wypozyczenie(3, 4), Wypozyczenie(2, 1), Wypozyczenie(2, 2)};
  116.  
  117. // Zapis do plików
  118. zapisz_do_pliku(sprzety, osoby, wypozyczenia);
  119.  
  120. // Odczyt z plików
  121. vector<Sprzet> sprzety2;
  122. vector<Osoba> osoby2;
  123. vector<Wypozyczenie> wypozyczenia2;
  124. odczytaj_z_pliku(sprzety2, osoby2, wypozyczenia2);
  125.  
  126. // Lista osób powyżej 25 lat wypożyczających hulajnogę
  127. cout << "Osoby powyżej 25 lat wypożyczające hulajnogę:" << endl;
  128. vector<Osoba> wynik = osoby_wiek_powyzszy_25_wypozyczajace_hulajnoge(osoby2, wypozyczenia2);
  129. for (const auto& osoba : wynik) {
  130. cout << osoba.pobierzNazwisko() << " (" << osoba.pobierzWiek() << " ";
  131. }
  132.  
  133. // Liczba wypożyczonych rowerów
  134. cout << "Liczba wypożyczonych rowerów: " << liczba_wypozyczonych_rowerow(sprzety2, wypozyczenia2) << endl;
  135.  
  136. return 0;
  137. }
  138.  
Success #stdin #stdout 0s 5304KB
stdin
45
stdout
Osoby powyżej 25 lat wypożyczające hulajnogę:
Liczba wypożyczonych rowerów: 0