From 1a8ba1c2bfab0bffb9552b58a8019b5708a5279e Mon Sep 17 00:00:00 2001 From: Szymon P Date: Tue, 28 Apr 2026 17:01:06 +0200 Subject: [PATCH] rzeczy --- .../matematyka_stosowana/laby/ankieta.RData | Bin 0 -> 6196 bytes .../matematyka_stosowana/laby/lab_7.R | 66 ++++++++++ .../programowanie/laby/kolokwium2.cpp | 121 ++++++++++++++++++ .../programowanie/laby/kolokwium2_probne.cpp | 83 ++++++++++++ .../programowanie/laby/lab8/kontener.cpp | 22 ++++ .../programowanie/laby/lab8/liczba.cpp | 24 ---- .../programowanie/laby/lab8/licznik.cpp | 45 +++++++ .../programowanie/laby/lab8/macierz.cpp | 117 +++++++++++++++++ .../programowanie/laby/lab8/punkt.cpp | 62 --------- .../programowanie/laby/lab8/tablica.cpp | 51 ++++++++ .../laby/lab8/{ulamki.cpp => ulamek.cpp} | 55 ++++---- .../programowanie/laby/lab8/wektor.cpp | 54 ++++++++ .../programowanie/laby/lab8/zad3.cpp | 11 ++ 13 files changed, 595 insertions(+), 116 deletions(-) create mode 100644 uczelnia/2_semestr/matematyka_stosowana/laby/ankieta.RData create mode 100644 uczelnia/2_semestr/matematyka_stosowana/laby/lab_7.R create mode 100644 uczelnia/2_semestr/programowanie/laby/kolokwium2.cpp create mode 100644 uczelnia/2_semestr/programowanie/laby/kolokwium2_probne.cpp create mode 100644 uczelnia/2_semestr/programowanie/laby/lab8/kontener.cpp delete mode 100644 uczelnia/2_semestr/programowanie/laby/lab8/liczba.cpp create mode 100644 uczelnia/2_semestr/programowanie/laby/lab8/licznik.cpp create mode 100644 uczelnia/2_semestr/programowanie/laby/lab8/macierz.cpp delete mode 100644 uczelnia/2_semestr/programowanie/laby/lab8/punkt.cpp create mode 100644 uczelnia/2_semestr/programowanie/laby/lab8/tablica.cpp rename uczelnia/2_semestr/programowanie/laby/lab8/{ulamki.cpp => ulamek.cpp} (64%) create mode 100644 uczelnia/2_semestr/programowanie/laby/lab8/wektor.cpp create mode 100644 uczelnia/2_semestr/programowanie/laby/lab8/zad3.cpp diff --git a/uczelnia/2_semestr/matematyka_stosowana/laby/ankieta.RData b/uczelnia/2_semestr/matematyka_stosowana/laby/ankieta.RData new file mode 100644 index 0000000000000000000000000000000000000000..07448285e86ab395645f3191e46000034b8ed78a GIT binary patch literal 6196 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 126) +Ankieta.M$Waga[28] = round(mean(Ankieta.M$Waga[-28]), 1) + +i = which(Ankieta$Waga > 126) +Ankieta$Waga[i] = round(mean(Ankieta.M$Waga[-28]), 1) + +# j) + diff --git a/uczelnia/2_semestr/programowanie/laby/kolokwium2.cpp b/uczelnia/2_semestr/programowanie/laby/kolokwium2.cpp new file mode 100644 index 0000000..df7b5f3 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/kolokwium2.cpp @@ -0,0 +1,121 @@ +#include +#include +#include + +class Towar { + double cena; + int sztuki; + +public: + std::string nazwa; + Towar(std::string nazwa, double cena, int sztuki) + : nazwa(nazwa), cena(cena), sztuki(sztuki) {} + Towar() {} + + void wypisz() const { + std::cout << "Nazwa: " << nazwa << '\n' + << "Cena: " << cena << '\n' + << "Liczba sztuk: " << sztuki << std::endl; + } + double wartosc() const { return cena * sztuki; } + void zmienCene(double nowaCena) { cena = nowaCena; } + void dodajSztuki(int ile) { sztuki += ile; } + // int operator+(Towar &t) { return cena + t.cena; } + Towar operator+(Towar &t) { + return Towar(nazwa + t.nazwa, cena + t.cena, sztuki + t.sztuki); + } +}; + +class Sklep { + Towar *sklep; + int max_ammount; + int current_ammount; + static int sklep_ammount; + +public: + Sklep(size_t max_towary) + : max_ammount(max_towary), sklep(new Towar[max_towary]), + current_ammount(0) { + Sklep::sklep_ammount++; + } + + ~Sklep() { + delete[] sklep; + sklep = nullptr; + Sklep::sklep_ammount--; + } + + bool dodajTowar(const Towar &t) { + if (current_ammount >= max_ammount) { + return false; + } + sklep[current_ammount++] = t; + return true; + } + + Towar *znajdzTowar(const std::string &nazwa) { + for (int i = 0; i < current_ammount; i++) { + if (sklep[i].nazwa == nazwa) { + return &sklep[i]; + } + } + return nullptr; + } + + void wypiszWszystkie() const { + for (int i = 0; i < current_ammount; i++) { + sklep[i].wypisz(); + } + } + + double obliczWartoscSklepu() const { + double sum = 0; + for (int i = 0; i < current_ammount; i++) { + sum += sklep[i].wartosc(); + } + return sum; + } + + static int ileSklepow() { return Sklep::sklep_ammount; } +}; + +int Sklep::sklep_ammount = 0; + +int main() { + Sklep sklep = Sklep(5); + std::cout << "=== 1. Oryginalny stan sklepu ===" << std::endl; + sklep.dodajTowar(Towar("Marchewka", 2, 3)); + sklep.dodajTowar(Towar("Banan", 4, 2)); + sklep.dodajTowar(Towar("Jabłko", 5, 3)); + sklep.dodajTowar(Towar("Ziemniak", 10, 15)); + sklep.wypiszWszystkie(); + + std::cout << std::endl; + std::cout << "=== 2. Modyfikowany stan sklepu ===" << std::endl; + + Towar *znalezionyTowar = sklep.znajdzTowar("Marchewka"); + znalezionyTowar->zmienCene(4); + sklep.wypiszWszystkie(); + Towar *znalezionyTowar2 = sklep.znajdzTowar("Banan"); + + std::cout << std::endl; + std::cout << "=== 3. Dodajemy marchewkę z bananem ===" << std::endl; + + Towar suma_towarow = *znalezionyTowar + *znalezionyTowar2; + suma_towarow.wypisz(); + + std::cout << std::endl; + std::cout << "=== 4. Wypisujemy wszystkie towary ===" << std::endl; + + sklep.wypiszWszystkie(); + + std::cout << std::endl; + std::cout << "=== 5. Wypisujemy łączną wartość sklepu ===" << std::endl; + + std::cout << "Wartość: " << sklep.obliczWartoscSklepu() << std::endl; + + std::cout << std::endl; + std::cout << "=== 6. Wypisujemy łączną ilość sklepów ===" << std::endl; + + std::cout << "Ilość: " << sklep.ileSklepow() << std::endl; +} diff --git a/uczelnia/2_semestr/programowanie/laby/kolokwium2_probne.cpp b/uczelnia/2_semestr/programowanie/laby/kolokwium2_probne.cpp new file mode 100644 index 0000000..58b47f5 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/kolokwium2_probne.cpp @@ -0,0 +1,83 @@ +#include +#include + +class Produkt { + double cena; + int ilosc; + +public: + std::string nazwa; + Produkt(std::string nazwa, double cena, int ilosc) + : nazwa(nazwa), cena(cena), ilosc(ilosc) {} + Produkt() {} + + void wypisz() const { + std::cout << "Nazwa: " << nazwa << '\n' + << "Cena: " << cena << '\n' + << "Ilość: " << ilosc << std::endl; + } + + double wartosc() const { return cena * ilosc; } + void zmienCene(double nowaCena) { cena = nowaCena; } + void dodajSztuke(int ile) { ilosc += ile; } +}; + +class Magazyn { + int max_pojemnosc; + int aktualna_pojemnosc; + static int ilosc_magazynow; + +public: + Produkt *magazyn; + + Magazyn(int pojemnosc) + : max_pojemnosc(pojemnosc), magazyn(new Produkt[pojemnosc]), + aktualna_pojemnosc(0) {} + ~Magazyn() { delete[] magazyn; } + bool dodajProdukt(const Produkt &p) { + if (aktualna_pojemnosc >= max_pojemnosc) { + return false; + } + magazyn[aktualna_pojemnosc++] = p; + return true; + } + + Produkt *znajdzProdukt(const std::string &nazwa) { + for (int i = 0; i < aktualna_pojemnosc; i++) { + if (magazyn[i].nazwa == nazwa) { + return &magazyn[i]; + } + } + return nullptr; + } + + void wypiszWszystkie() const { + for (int i = 0; i < aktualna_pojemnosc; i++) { + magazyn[i].wypisz(); + } + } + + double obliczWartoscMagazynu() const { + double wartosc = 0; + for (int i = 0; i < aktualna_pojemnosc; i++) { + wartosc += magazyn[i].wartosc(); + } + return wartosc; + } + + static int ileMagazynow() { return Magazyn::ilosc_magazynow; } +}; + +int Magazyn::ilosc_magazynow = 0; + +int main() { + Magazyn m = Magazyn(10); + m.dodajProdukt(Produkt("marchewka", 2, 2)); + m.dodajProdukt(Produkt("banan", 5, 3)); + m.dodajProdukt(Produkt("gruszka", 4, 10)); + Produkt *p = m.znajdzProdukt("gruszka"); + p->zmienCene(234); + m.wypiszWszystkie(); + m.obliczWartoscMagazynu(); + m.ileMagazynow(); +} diff --git a/uczelnia/2_semestr/programowanie/laby/lab8/kontener.cpp b/uczelnia/2_semestr/programowanie/laby/lab8/kontener.cpp new file mode 100644 index 0000000..eea0c65 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab8/kontener.cpp @@ -0,0 +1,22 @@ +#include +class Kontener { + int *dane; + int n; + +public: + Kontener(int rozmiar) : n(rozmiar), dane(new int[rozmiar]()) {} + const int &operator[](int i) const { return dane[i]; } + + Kontener &operator+=(const Kontener &inny) { + for (int i = 0; i < n; i++) + dane[i] += inny.dane[i]; + return *this; + } + operator int() const { return n; } +}; + +int main() { + Kontener k = Kontener(5); + k += 1; + std::cout << int(k); +} diff --git a/uczelnia/2_semestr/programowanie/laby/lab8/liczba.cpp b/uczelnia/2_semestr/programowanie/laby/lab8/liczba.cpp deleted file mode 100644 index 1405a1a..0000000 --- a/uczelnia/2_semestr/programowanie/laby/lab8/liczba.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include - -class Liczba { - int wartosc; - -public: - Liczba(int w) : wartosc(w) {} - Liczba operator+(Liczba &inny) { - wartosc += inny.wartosc; - return *this; - } - friend std::ostream &operator<<(std::ostream &os, const Liczba &liczba) { - return os << liczba.wartosc; - } -}; - -int main() { - Liczba l1 = Liczba(5); - Liczba l2 = Liczba(10); - Liczba l3 = l1 + l2; - std::cout << l3; - return 0; -} diff --git a/uczelnia/2_semestr/programowanie/laby/lab8/licznik.cpp b/uczelnia/2_semestr/programowanie/laby/lab8/licznik.cpp new file mode 100644 index 0000000..2d4ec24 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab8/licznik.cpp @@ -0,0 +1,45 @@ +#include +#include + +class Licznik { + int wartosc; + +public: + Licznik(int wartosc) : wartosc(wartosc) {} + Licznik() : wartosc(0) {} + Licznik &operator++() { + wartosc++; + return *this; + } + Licznik operator++(int) { + Licznik stary = *this; + ++wartosc; + return stary; + } + Licznik &operator--() { + wartosc--; + return *this; + } + Licznik operator--(int) { + Licznik stary = *this; + --wartosc; + return stary; + } + Licznik &operator=(const Licznik &inny_licznik) { + if (this != &inny_licznik) { + wartosc = inny_licznik.wartosc; + } + return *this; + } + friend std::ostream &operator<<(std::ostream &os, Licznik &licznik) { + os << licznik.wartosc; + return os; + } +}; + +// int main() { +// Licznik a(5); +// std::cout << a++ << std::endl; // 6 +// std::cout << a << std::endl; // 6 +// std::cout << ++a << std::endl; // 7 +// } diff --git a/uczelnia/2_semestr/programowanie/laby/lab8/macierz.cpp b/uczelnia/2_semestr/programowanie/laby/lab8/macierz.cpp new file mode 100644 index 0000000..562d5e1 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab8/macierz.cpp @@ -0,0 +1,117 @@ +#include +#include +#define SIZE 2 + +class Macierz2x2 { + +public: + int macierz[SIZE][SIZE]; + Macierz2x2(int a, int b, int c, int d) { + macierz[0][0] = a; + macierz[0][1] = b; + macierz[1][0] = c; + macierz[1][1] = d; + } + Macierz2x2() { + for (int i = 0; i < SIZE; i++) { + for (int j = 0; j < SIZE; j++) { + macierz[i][j] = 0; + } + } + } + + Macierz2x2 &operator+=(const Macierz2x2 &inna_macierz) { + for (int i = 0; i < SIZE; i++) { + for (int j = 0; j < SIZE; j++) { + macierz[i][j] += inna_macierz.macierz[i][j]; + } + } + return *this; + } + + Macierz2x2 operator+(const Macierz2x2 &inna_macierz) const { + Macierz2x2 m = *this; + m += inna_macierz; + return m; + } + + Macierz2x2 &operator-=(const Macierz2x2 &inna_macierz) { + for (int i = 0; i < SIZE; i++) { + for (int j = 0; j < SIZE; j++) { + macierz[i][j] -= inna_macierz.macierz[i][j]; + } + } + return *this; + } + + Macierz2x2 operator-(const Macierz2x2 &inna_macierz) const { + Macierz2x2 m = *this; + m -= inna_macierz; + return m; + } + + Macierz2x2 operator*(const Macierz2x2 &inna_macierz) const { + Macierz2x2 m; + m.macierz[0][0] = macierz[0][0] * inna_macierz.macierz[0][0] + + macierz[0][1] * inna_macierz.macierz[1][0]; + m.macierz[0][1] = macierz[0][0] * inna_macierz.macierz[0][1] + + macierz[0][1] * inna_macierz.macierz[1][1]; + m.macierz[1][0] = macierz[1][0] * inna_macierz.macierz[0][0] + + macierz[1][1] * inna_macierz.macierz[1][0]; + m.macierz[1][1] = macierz[1][0] * inna_macierz.macierz[0][1] + + macierz[1][1] * inna_macierz.macierz[1][1]; + return m; + } + + int *operator[](int x) { return macierz[x]; } + const int *operator[](int x) const { return macierz[x]; } + + friend std::ostream &operator<<(std::ostream &os, Macierz2x2 &macierz) { + for (int i = 0; i < SIZE; i++) { + os << '['; + for (int j = 0; j < SIZE; j++) { + os << macierz.macierz[i][j]; + if (j < SIZE - 1) + os << " "; + } + os << ']'; + os << '\n'; + } + return os; + } + + friend std::istream &operator>>(std::istream &is, Macierz2x2 &macierz) { + char separator; + is >> macierz.macierz[0][0] >> separator >> macierz.macierz[0][1] >> + separator >> macierz.macierz[1][0] >> separator >> + macierz.macierz[1][1]; + return is; + } + + explicit operator double() const { + return macierz[0][0] * macierz[1][1] - macierz[1][0] * macierz[0][1]; + } + + const int operator()(int i, int j) const { return macierz[i][j]; } + int &operator()(int i, int j) { return macierz[i][j]; } +}; + +int main() { + Macierz2x2 m1 = Macierz2x2(1, 2, 3, 4); + std::cout << "Macierz 1:\n"; + std::cout << m1; + Macierz2x2 m2; + std::cout << "Podaj swoją macierz: \n"; + std::cout << "Macierz 2:\n"; + std::cin >> m2; + std::cout << m2; + Macierz2x2 m3 = m1 + m2; + Macierz2x2 m4 = m1 * m2; + std::cout << "Macierz 3(dodawanie):\n"; + std::cout << m3 << std::endl; + std::cout << "Macierz 4(mnożenie):\n"; + std::cout << m4 << std::endl; + std::cout << "Wyznacznik macierz m1: " << double(m1) << std::endl; + std::cout << "Element (1,1) macierzy m1: " << m1(1, 1) << std::endl; + ; +} diff --git a/uczelnia/2_semestr/programowanie/laby/lab8/punkt.cpp b/uczelnia/2_semestr/programowanie/laby/lab8/punkt.cpp deleted file mode 100644 index 0f2c921..0000000 --- a/uczelnia/2_semestr/programowanie/laby/lab8/punkt.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include - -class Punkt2d { - -public: - double x, y; - Punkt2d(double x, double y) : x(x), y(y) {} - Punkt2d() : x(0), y(0) {} - - Punkt2d operator+=(const Punkt2d &inny_pkt) { - this->x += inny_pkt.x; - this->y += inny_pkt.y; - return *this; - } - - Punkt2d operator-=(const Punkt2d &inny_pkt) { - this->x -= inny_pkt.x; - this->y -= inny_pkt.y; - return *this; - } - - Punkt2d operator*=(const Punkt2d &inny_pkt) { - this->x *= inny_pkt.x; - this->y *= inny_pkt.y; - return *this; - } - - Punkt2d operator+(const Punkt2d &inny_pkt) const { - Punkt2d p = *this; - p += inny_pkt; - return p; - } - - Punkt2d operator-(const Punkt2d &inny_pkt) const { - Punkt2d pkt; - pkt.x = x - inny_pkt.x; - pkt.y = y - inny_pkt.y; - return pkt; - } - bool operator==(const Punkt2d &inny_pkt) const { - if (x != inny_pkt.x || y != inny_pkt.y) { - return false; - } - return true; - } - bool operator!=(const Punkt2d &inny_pkt) const { - return !(*this == inny_pkt); - } - - friend std::ostream &operator<<(std::ostream &os, const Punkt2d &inny_pkt) { - os << '(' << inny_pkt.x << ',' << inny_pkt.y << ')'; - return os; - } -}; - -int main() { - Punkt2d a(6, 7), b(3, 4); - Punkt2d c = a + b; - std::cout << c << std::endl; // (9, 11) - std::cout << (a == b) << std::endl; // false - std::cout << (a != a) << std::endl; // false -} diff --git a/uczelnia/2_semestr/programowanie/laby/lab8/tablica.cpp b/uczelnia/2_semestr/programowanie/laby/lab8/tablica.cpp new file mode 100644 index 0000000..1a89358 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab8/tablica.cpp @@ -0,0 +1,51 @@ +#include +#include +#include +#include + +class Tablica { + int *arr; + + void is_size_correct(size_t index) const { + if (index > size) { + throw std::out_of_range("Zbyt duży index! Maksymalny rozmiar to %d" + + std::to_string(size)); + } + + if (index < 0) { + throw std::out_of_range("Zbyt mały index! Minimalny rozmiar to 0"); + } + } + +public: + size_t size; + + Tablica(size_t size) : size{size} { arr = new int[size]; } + + // po zakomentowaniu tej metody program wciąż się kompiluje + int &operator[](size_t index) const { + is_size_correct(index); + return *(arr + index); + } + + int &operator[](size_t index) { + is_size_correct(index); + return *(arr + index); + } +}; + +void przeczytaj_tablice(Tablica &tablica) { + for (int i = 0; i < tablica.size; i++) { + try { + std::cout << tablica[i] << '\n'; + } catch (const std::out_of_range &e) { + std::cout << e.what(); + continue; + } + } +} + +int main() { + Tablica t = Tablica(10); + przeczytaj_tablice(t); +} diff --git a/uczelnia/2_semestr/programowanie/laby/lab8/ulamki.cpp b/uczelnia/2_semestr/programowanie/laby/lab8/ulamek.cpp similarity index 64% rename from uczelnia/2_semestr/programowanie/laby/lab8/ulamki.cpp rename to uczelnia/2_semestr/programowanie/laby/lab8/ulamek.cpp index 5caaf79..107073e 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab8/ulamki.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab8/ulamek.cpp @@ -26,6 +26,10 @@ public: Ulamek() : licznik(0), mianownik(1) {} + explicit operator double() const { + return static_cast(licznik) / mianownik; + } + Ulamek operator+(const Ulamek &inny_ulamek) const { return Ulamek(licznik * inny_ulamek.mianownik + inny_ulamek.licznik * mianownik, @@ -79,37 +83,28 @@ public: os << u.licznik << '/' << u.mianownik; return os; } + friend std::istream &operator>>(std::istream &is, Ulamek &u) { + char separator; + int licznik, mianownik; + is >> licznik >> separator >> mianownik; + + if (mianownik == 0) { + is.setstate(std::ios::failbit); // nadmiarowe, bo w konstruktorze też + // sprawdzamy czy mianownik == 0 + } + + if (is) { + u = Ulamek(licznik, mianownik); + } + return is; + } }; -Ulamek stworz_ulamek() { - int licznik, mianownik; - std::cout << "Podaj licznik: "; - std::cin >> licznik; - std::cout << "Podaj mianownik: "; - std::cin >> mianownik; - return Ulamek(licznik, mianownik); -} - int main() { - Ulamek u1 = stworz_ulamek(); - std::cout << "Ulamek 1: " << u1 << std::endl; - Ulamek u2 = stworz_ulamek(); - std::cout << "Ulamek 2: " << u2 << std::endl; - std::cout << "=== OPERACJE ===" << std::endl; - std::cout << "Dodawanie: " << u1 + u2 << std::endl; - std::cout << "Odejmowanie: " << u1 - u2 << std::endl; - std::cout << "Mnożenie: " << u1 * u2 << std::endl; - try { - std::cout << "Dzielenie: " << u1 / u2 << std::endl; - } catch (const std::invalid_argument &e) { - std::cout << "Błąd: " << e.what() << std::endl; - } - std::cout << "=== PORÓWNYWANIE ===" << std::endl; - std::cout << std::boolalpha; - std::cout << u1 << " == " << u2 << ": " << (u1 == u2) << std::endl; - std::cout << u1 << " != " << u2 << ": " << (u1 != u2) << std::endl; - std::cout << u1 << " <= " << u2 << ": " << (u1 <= u2) << std::endl; - std::cout << u1 << " >= " << u2 << ": " << (u1 >= u2) << std::endl; - std::cout << u1 << " < " << u2 << ": " << (u1 < u2) << std::endl; - std::cout << u1 << " > " << u2 << ": " << (u1 > u2) << std::endl; + Ulamek ulamek; + std::cin >> ulamek; + // double ulamek_double = ulamek; ta linia się nie skompiluje, ponieważ k + // onwersja musi być explicit + double ulamek_double = double(ulamek); + std::cout << ulamek_double; } diff --git a/uczelnia/2_semestr/programowanie/laby/lab8/wektor.cpp b/uczelnia/2_semestr/programowanie/laby/lab8/wektor.cpp new file mode 100644 index 0000000..bdc050c --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab8/wektor.cpp @@ -0,0 +1,54 @@ +#include + +class Wektor2D { + +public: + double x, y; + Wektor2D(double x, double y) : x(x), y(y) {} + Wektor2D() : x(0), y(0) {} + + Wektor2D operator+=(const Wektor2D &inny_pkt) { + this->x += inny_pkt.x; + this->y += inny_pkt.y; + return *this; + } + + Wektor2D operator-=(const Wektor2D &inny_pkt) { + this->x -= inny_pkt.x; + this->y -= inny_pkt.y; + return *this; + } + + Wektor2D operator*=(const Wektor2D &inny_pkt) { + this->x *= inny_pkt.x; + this->y *= inny_pkt.y; + return *this; + } + + Wektor2D operator+(const Wektor2D &inny_pkt) const { + Wektor2D p = *this; + p += inny_pkt; + return p; + } + + Wektor2D operator-(const Wektor2D &inny_pkt) const { + Wektor2D pkt; + pkt.x = x - inny_pkt.x; + pkt.y = y - inny_pkt.y; + return pkt; + } + bool operator==(const Wektor2D &inny_pkt) const { + if (x != inny_pkt.x || y != inny_pkt.y) { + return false; + } + return true; + } + bool operator!=(const Wektor2D &inny_pkt) const { + return !(*this == inny_pkt); + } + + friend std::ostream &operator<<(std::ostream &os, const Wektor2D &inny_pkt) { + os << '(' << inny_pkt.x << ',' << inny_pkt.y << ')'; + return os; + } +}; diff --git a/uczelnia/2_semestr/programowanie/laby/lab8/zad3.cpp b/uczelnia/2_semestr/programowanie/laby/lab8/zad3.cpp new file mode 100644 index 0000000..115dab4 --- /dev/null +++ b/uczelnia/2_semestr/programowanie/laby/lab8/zad3.cpp @@ -0,0 +1,11 @@ +#include "licznik.cpp" +#include "wektor.cpp" + +int main() { + Wektor2D a(1, 2), b(3, 4); + a += b; + std::cout << a << std::endl; // (4,6) + Licznik c(10); + Licznik d = c++; + std::cout << c << " " << d << std::endl; // 11 10 +}